mirror of
https://github.com/holub/mame
synced 2025-07-04 17:38:08 +03:00
Device-ified asic65.c. (nw)
This commit is contained in:
parent
3c24c33a86
commit
1c0ffa52af
@ -20,7 +20,6 @@
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "machine/asic65.h"
|
|
||||||
#include "video/atarirle.h"
|
#include "video/atarirle.h"
|
||||||
#include "includes/atarig42.h"
|
#include "includes/atarig42.h"
|
||||||
|
|
||||||
@ -92,7 +91,7 @@ WRITE16_MEMBER(atarig42_state::io_latch_w)
|
|||||||
if (ACCESSING_BITS_8_15)
|
if (ACCESSING_BITS_8_15)
|
||||||
{
|
{
|
||||||
/* bit 14 controls the ASIC65 reset line */
|
/* bit 14 controls the ASIC65 reset line */
|
||||||
asic65_reset(machine(), (~data >> 14) & 1);
|
m_asic65->reset_line((~data >> 14) & 1);
|
||||||
|
|
||||||
/* bits 13-11 are the MO control bits */
|
/* bits 13-11 are the MO control bits */
|
||||||
m_rle->control_write(space, 0, (data >> 11) & 7);
|
m_rle->control_write(space, 0, (data >> 11) & 7);
|
||||||
@ -344,9 +343,9 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, atarig42_state )
|
|||||||
AM_RANGE(0xe03000, 0xe03001) AM_WRITE(video_int_ack_w)
|
AM_RANGE(0xe03000, 0xe03001) AM_WRITE(video_int_ack_w)
|
||||||
AM_RANGE(0xe03800, 0xe03801) AM_WRITE(watchdog_reset16_w)
|
AM_RANGE(0xe03800, 0xe03801) AM_WRITE(watchdog_reset16_w)
|
||||||
AM_RANGE(0xe80000, 0xe80fff) AM_RAM
|
AM_RANGE(0xe80000, 0xe80fff) AM_RAM
|
||||||
AM_RANGE(0xf40000, 0xf40001) AM_READ_LEGACY(asic65_io_r)
|
AM_RANGE(0xf40000, 0xf40001) AM_DEVREAD("asic65", asic65_device, io_r)
|
||||||
AM_RANGE(0xf60000, 0xf60001) AM_READ_LEGACY(asic65_r)
|
AM_RANGE(0xf60000, 0xf60001) AM_DEVREAD("asic65", asic65_device, read)
|
||||||
AM_RANGE(0xf80000, 0xf80003) AM_WRITE_LEGACY(asic65_data_w)
|
AM_RANGE(0xf80000, 0xf80003) AM_DEVWRITE("asic65", asic65_device, data_w)
|
||||||
AM_RANGE(0xfa0000, 0xfa0fff) AM_DEVREADWRITE8("eeprom", atari_eeprom_device, read, write, 0x00ff)
|
AM_RANGE(0xfa0000, 0xfa0fff) AM_DEVREADWRITE8("eeprom", atari_eeprom_device, read, write, 0x00ff)
|
||||||
AM_RANGE(0xfc0000, 0xfc0fff) AM_RAM_WRITE(paletteram_666_w) AM_SHARE("paletteram")
|
AM_RANGE(0xfc0000, 0xfc0fff) AM_RAM_WRITE(paletteram_666_w) AM_SHARE("paletteram")
|
||||||
AM_RANGE(0xff0000, 0xff0fff) AM_RAM AM_SHARE("rle")
|
AM_RANGE(0xff0000, 0xff0fff) AM_RAM AM_SHARE("rle")
|
||||||
@ -539,9 +538,6 @@ static MACHINE_CONFIG_START( atarig42, atarig42_state )
|
|||||||
MCFG_CPU_PROGRAM_MAP(main_map)
|
MCFG_CPU_PROGRAM_MAP(main_map)
|
||||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
|
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
|
||||||
|
|
||||||
/* ASIC65 */
|
|
||||||
MCFG_FRAGMENT_ADD(asic65)
|
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(atarig42_state,atarig42)
|
MCFG_MACHINE_START_OVERRIDE(atarig42_state,atarig42)
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(atarig42_state,atarig42)
|
MCFG_MACHINE_RESET_OVERRIDE(atarig42_state,atarig42)
|
||||||
|
|
||||||
@ -573,10 +569,16 @@ MACHINE_CONFIG_END
|
|||||||
|
|
||||||
static MACHINE_CONFIG_DERIVED( atarig42_0x200, atarig42 )
|
static MACHINE_CONFIG_DERIVED( atarig42_0x200, atarig42 )
|
||||||
MCFG_ATARIRLE_ADD("rle", modesc_0x200)
|
MCFG_ATARIRLE_ADD("rle", modesc_0x200)
|
||||||
|
|
||||||
|
/* ASIC65 */
|
||||||
|
MCFG_ASIC65_ADD("asic65", ASIC65_ROMBASED)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
static MACHINE_CONFIG_DERIVED( atarig42_0x400, atarig42 )
|
static MACHINE_CONFIG_DERIVED( atarig42_0x400, atarig42 )
|
||||||
MCFG_ATARIRLE_ADD("rle", modesc_0x400)
|
MCFG_ATARIRLE_ADD("rle", modesc_0x400)
|
||||||
|
|
||||||
|
/* ASIC65 */
|
||||||
|
MCFG_ASIC65_ADD("asic65", ASIC65_GUARDIANS)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
@ -595,7 +597,7 @@ ROM_START( roadriot )
|
|||||||
ROM_LOAD16_BYTE( "136089-2016.9d", 0x40000, 0x20000, CRC(6191653c) SHA1(97d1a84a585149e8f2c49cab7af22dc755dff350) )
|
ROM_LOAD16_BYTE( "136089-2016.9d", 0x40000, 0x20000, CRC(6191653c) SHA1(97d1a84a585149e8f2c49cab7af22dc755dff350) )
|
||||||
ROM_LOAD16_BYTE( "136089-2015.9c", 0x40001, 0x20000, CRC(0d34419a) SHA1(f16e9fb4cd537d727611cb7dd5537c030671fe1e) )
|
ROM_LOAD16_BYTE( "136089-2015.9c", 0x40001, 0x20000, CRC(0d34419a) SHA1(f16e9fb4cd537d727611cb7dd5537c030671fe1e) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136089-1012.3f", 0x00000, 0x0a80, CRC(7c5498e7) SHA1(9d8b235baf7b75bef8ef9b168647c5b2b80b2cb3) )
|
ROM_LOAD( "136089-1012.3f", 0x00000, 0x0a80, CRC(7c5498e7) SHA1(9d8b235baf7b75bef8ef9b168647c5b2b80b2cb3) )
|
||||||
|
|
||||||
ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 6502 code */
|
ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 6502 code */
|
||||||
@ -653,7 +655,7 @@ ROM_START( roadrioto )
|
|||||||
ROM_LOAD16_BYTE( "136089-2016.9d", 0x40000, 0x20000, CRC(6191653c) SHA1(97d1a84a585149e8f2c49cab7af22dc755dff350) ) /* PALs & BPROMs in White labels */
|
ROM_LOAD16_BYTE( "136089-2016.9d", 0x40000, 0x20000, CRC(6191653c) SHA1(97d1a84a585149e8f2c49cab7af22dc755dff350) ) /* PALs & BPROMs in White labels */
|
||||||
ROM_LOAD16_BYTE( "136089-2015.9c", 0x40001, 0x20000, CRC(0d34419a) SHA1(f16e9fb4cd537d727611cb7dd5537c030671fe1e) )
|
ROM_LOAD16_BYTE( "136089-2015.9c", 0x40001, 0x20000, CRC(0d34419a) SHA1(f16e9fb4cd537d727611cb7dd5537c030671fe1e) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136089-1012.3f", 0x00000, 0x0a80, CRC(7c5498e7) SHA1(9d8b235baf7b75bef8ef9b168647c5b2b80b2cb3) )
|
ROM_LOAD( "136089-1012.3f", 0x00000, 0x0a80, CRC(7c5498e7) SHA1(9d8b235baf7b75bef8ef9b168647c5b2b80b2cb3) )
|
||||||
|
|
||||||
ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 6502 code */
|
ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 6502 code */
|
||||||
@ -712,7 +714,7 @@ ROM_START( guardian )
|
|||||||
ROM_LOAD16_BYTE( "136092-2023.9e", 0x40000, 0x20000, CRC(cfa29316) SHA1(4e0e76304e29ee59bc2ce9a704e3f651dc9d473c) )
|
ROM_LOAD16_BYTE( "136092-2023.9e", 0x40000, 0x20000, CRC(cfa29316) SHA1(4e0e76304e29ee59bc2ce9a704e3f651dc9d473c) )
|
||||||
ROM_LOAD16_BYTE( "136092-2022.9cd", 0x40001, 0x20000, CRC(ed2abc91) SHA1(81531040d5663f6ab82e924210056e3737e17a8d) )
|
ROM_LOAD16_BYTE( "136092-2022.9cd", 0x40001, 0x20000, CRC(ed2abc91) SHA1(81531040d5663f6ab82e924210056e3737e17a8d) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136089-1012.3f", 0x00000, 0x0a80, NO_DUMP )
|
ROM_LOAD( "136089-1012.3f", 0x00000, 0x0a80, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 6502 code */
|
ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 6502 code */
|
||||||
@ -780,8 +782,7 @@ DRIVER_INIT_MEMBER(atarig42_state,roadriot)
|
|||||||
m_sloop_base = main.install_readwrite_handler(0x000000, 0x07ffff, read16_delegate(FUNC(atarig42_state::roadriot_sloop_data_r),this), write16_delegate(FUNC(atarig42_state::roadriot_sloop_data_w),this));
|
m_sloop_base = main.install_readwrite_handler(0x000000, 0x07ffff, read16_delegate(FUNC(atarig42_state::roadriot_sloop_data_r),this), write16_delegate(FUNC(atarig42_state::roadriot_sloop_data_w),this));
|
||||||
main.set_direct_update_handler(direct_update_delegate(FUNC(atarig42_state::atarig42_sloop_direct_handler), this));
|
main.set_direct_update_handler(direct_update_delegate(FUNC(atarig42_state::atarig42_sloop_direct_handler), this));
|
||||||
|
|
||||||
asic65_config(machine(), ASIC65_ROMBASED);
|
/*
|
||||||
/*
|
|
||||||
Road Riot color MUX
|
Road Riot color MUX
|
||||||
|
|
||||||
CRA10=!MGEP*!AN.VID7*AN.0 -- if (mopri < pfpri) && (!alpha)
|
CRA10=!MGEP*!AN.VID7*AN.0 -- if (mopri < pfpri) && (!alpha)
|
||||||
@ -816,8 +817,7 @@ DRIVER_INIT_MEMBER(atarig42_state,guardian)
|
|||||||
m_sloop_base = main.install_readwrite_handler(0x000000, 0x07ffff, read16_delegate(FUNC(atarig42_state::guardians_sloop_data_r),this), write16_delegate(FUNC(atarig42_state::guardians_sloop_data_w),this));
|
m_sloop_base = main.install_readwrite_handler(0x000000, 0x07ffff, read16_delegate(FUNC(atarig42_state::guardians_sloop_data_r),this), write16_delegate(FUNC(atarig42_state::guardians_sloop_data_w),this));
|
||||||
main.set_direct_update_handler(direct_update_delegate(FUNC(atarig42_state::atarig42_sloop_direct_handler), this));
|
main.set_direct_update_handler(direct_update_delegate(FUNC(atarig42_state::atarig42_sloop_direct_handler), this));
|
||||||
|
|
||||||
asic65_config(machine(), ASIC65_GUARDIANS);
|
/*
|
||||||
/*
|
|
||||||
Guardians color MUX
|
Guardians color MUX
|
||||||
|
|
||||||
CRA10=MGEP*!AN.VID7*AN.0*!MO.0 -- if (mopri >= pfpri) && (!alpha) && (mopix != 0)
|
CRA10=MGEP*!AN.VID7*AN.0*!MO.0 -- if (mopri >= pfpri) && (!alpha) && (mopix != 0)
|
||||||
|
@ -326,8 +326,6 @@ Notes:
|
|||||||
|
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "machine/atarigen.h"
|
|
||||||
#include "machine/asic65.h"
|
|
||||||
#include "sound/dac.h"
|
#include "sound/dac.h"
|
||||||
#include "includes/slapstic.h"
|
#include "includes/slapstic.h"
|
||||||
#include "includes/harddriv.h"
|
#include "includes/harddriv.h"
|
||||||
@ -1482,7 +1480,7 @@ static MACHINE_CONFIG_FRAGMENT( dsk )
|
|||||||
MCFG_CPU_PROGRAM_MAP(dsk_dsp32_map)
|
MCFG_CPU_PROGRAM_MAP(dsk_dsp32_map)
|
||||||
|
|
||||||
/* ASIC65 */
|
/* ASIC65 */
|
||||||
MCFG_FRAGMENT_ADD( asic65 )
|
MCFG_ASIC65_ADD("asic65", ASIC65_STANDARD)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
@ -1495,7 +1493,7 @@ static MACHINE_CONFIG_FRAGMENT( dsk2 )
|
|||||||
MCFG_CPU_PROGRAM_MAP(dsk2_dsp32_map)
|
MCFG_CPU_PROGRAM_MAP(dsk2_dsp32_map)
|
||||||
|
|
||||||
/* ASIC65 */
|
/* ASIC65 */
|
||||||
MCFG_FRAGMENT_ADD( asic65 )
|
MCFG_ASIC65_ADD("asic65", ASIC65_STANDARD)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
@ -1597,8 +1595,8 @@ static MACHINE_CONFIG_DERIVED( steeltal, multisync_msp )
|
|||||||
MCFG_DEVICE_REMOVE("lspeaker")
|
MCFG_DEVICE_REMOVE("lspeaker")
|
||||||
MCFG_DEVICE_REMOVE("rspeaker")
|
MCFG_DEVICE_REMOVE("rspeaker")
|
||||||
|
|
||||||
MCFG_FRAGMENT_ADD( asic65 ) /* ASIC65 on DSPCOM board */
|
MCFG_ASIC65_ADD("asic65", ASIC65_STEELTAL) /* ASIC65 on DSPCOM board */
|
||||||
|
|
||||||
/* sund hardware */
|
/* sund hardware */
|
||||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
|
||||||
@ -2562,7 +2560,7 @@ ROM_START( racedriv )
|
|||||||
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
||||||
ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
|
ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
||||||
@ -2610,7 +2608,7 @@ ROM_START( racedrivb )
|
|||||||
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
||||||
ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
|
ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
||||||
@ -2658,7 +2656,7 @@ ROM_START( racedrivg )
|
|||||||
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
||||||
ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
|
ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
||||||
@ -2706,7 +2704,7 @@ ROM_START( racedriv4 )
|
|||||||
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
||||||
ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
|
ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
||||||
@ -2754,7 +2752,7 @@ ROM_START( racedrivb4 )
|
|||||||
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
||||||
ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
|
ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
||||||
@ -2802,7 +2800,7 @@ ROM_START( racedrivg4 )
|
|||||||
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
||||||
ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
|
ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
||||||
@ -2850,7 +2848,7 @@ ROM_START( racedriv3 )
|
|||||||
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
||||||
ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
|
ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
||||||
@ -2898,7 +2896,7 @@ ROM_START( racedriv2 )
|
|||||||
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
||||||
ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
|
ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
||||||
@ -2946,7 +2944,7 @@ ROM_START( racedriv1 )
|
|||||||
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
||||||
ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
|
ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
||||||
@ -2994,7 +2992,7 @@ ROM_START( racedrivg1 )
|
|||||||
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
||||||
ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
|
ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
||||||
@ -3042,7 +3040,7 @@ ROM_START( racedrivb1 )
|
|||||||
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
|
||||||
ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
|
ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
||||||
@ -3090,7 +3088,7 @@ ROM_START( racedrivc )
|
|||||||
ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
|
ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
|
||||||
ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
|
ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
||||||
@ -3138,7 +3136,7 @@ ROM_START( racedrivcb )
|
|||||||
ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
|
ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
|
||||||
ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
|
ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
||||||
@ -3186,7 +3184,7 @@ ROM_START( racedrivcg )
|
|||||||
ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
|
ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
|
||||||
ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
|
ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
||||||
@ -3234,7 +3232,7 @@ ROM_START( racedrivc4 )
|
|||||||
ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
|
ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
|
||||||
ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
|
ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
||||||
@ -3282,7 +3280,7 @@ ROM_START( racedrivcb4 )
|
|||||||
ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
|
ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
|
||||||
ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
|
ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
||||||
@ -3330,7 +3328,7 @@ ROM_START( racedrivcg4 )
|
|||||||
ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
|
ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
|
||||||
ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
|
ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
||||||
@ -3378,7 +3376,7 @@ ROM_START( racedrivc2 )
|
|||||||
ROM_LOAD16_BYTE( "136078-1015.210y", 0x0e0001, 0x010000, CRC(64dd6040) SHA1(bcadf4f1d9a0685ca39af903d3342d590850513c) )
|
ROM_LOAD16_BYTE( "136078-1015.210y", 0x0e0001, 0x010000, CRC(64dd6040) SHA1(bcadf4f1d9a0685ca39af903d3342d590850513c) )
|
||||||
ROM_LOAD16_BYTE( "136078-1016.200y", 0x0e0000, 0x010000, CRC(a2a0ed28) SHA1(6f308a38594f7e54ebdd6983d28664ba595bc525) )
|
ROM_LOAD16_BYTE( "136078-1016.200y", 0x0e0000, 0x010000, CRC(a2a0ed28) SHA1(6f308a38594f7e54ebdd6983d28664ba595bc525) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
||||||
@ -3426,7 +3424,7 @@ ROM_START( racedrivc1 )
|
|||||||
ROM_LOAD16_BYTE( "136078-1015.210y", 0x0e0001, 0x010000, CRC(64dd6040) SHA1(bcadf4f1d9a0685ca39af903d3342d590850513c) )
|
ROM_LOAD16_BYTE( "136078-1015.210y", 0x0e0001, 0x010000, CRC(64dd6040) SHA1(bcadf4f1d9a0685ca39af903d3342d590850513c) )
|
||||||
ROM_LOAD16_BYTE( "136078-1016.200y", 0x0e0000, 0x010000, CRC(a2a0ed28) SHA1(6f308a38594f7e54ebdd6983d28664ba595bc525) )
|
ROM_LOAD16_BYTE( "136078-1016.200y", 0x0e0000, 0x010000, CRC(a2a0ed28) SHA1(6f308a38594f7e54ebdd6983d28664ba595bc525) )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
|
||||||
@ -3578,7 +3576,7 @@ ROM_START( racedrivpan )
|
|||||||
|
|
||||||
/* ----------------------- */
|
/* ----------------------- */
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* ASIC65 TMS32015 code */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
|
||||||
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
|
||||||
|
|
||||||
/* ADSP board */
|
/* ADSP board */
|
||||||
@ -3627,7 +3625,7 @@ ROM_START( steeltal )
|
|||||||
ROM_LOAD( "136087-5001.1f", 0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
|
ROM_LOAD( "136087-5001.1f", 0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
|
||||||
ROM_CONTINUE( 0x004000, 0x00c000 )
|
ROM_CONTINUE( 0x004000, 0x00c000 )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* 64k for ASIC65 */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* 64k for ASIC65 */
|
||||||
ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
|
ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
|
||||||
|
|
||||||
ROM_REGION( 0x10000, "cpu6", 0 ) /* 64k for DSP communications */
|
ROM_REGION( 0x10000, "cpu6", 0 ) /* 64k for DSP communications */
|
||||||
@ -3688,7 +3686,7 @@ ROM_START( steeltalg )
|
|||||||
ROM_LOAD( "136087-5001.1f", 0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
|
ROM_LOAD( "136087-5001.1f", 0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
|
||||||
ROM_CONTINUE( 0x004000, 0x00c000 )
|
ROM_CONTINUE( 0x004000, 0x00c000 )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* 64k for ASIC65 */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* 64k for ASIC65 */
|
||||||
ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
|
ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
|
||||||
|
|
||||||
ROM_REGION( 0x10000, "cpu6", 0 ) /* 64k for DSP communications */
|
ROM_REGION( 0x10000, "cpu6", 0 ) /* 64k for DSP communications */
|
||||||
@ -3749,7 +3747,7 @@ ROM_START( steeltal1 )
|
|||||||
ROM_LOAD( "136087-5001.1f", 0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
|
ROM_LOAD( "136087-5001.1f", 0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
|
||||||
ROM_CONTINUE( 0x004000, 0x00c000 )
|
ROM_CONTINUE( 0x004000, 0x00c000 )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* 64k for ASIC65 */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* 64k for ASIC65 */
|
||||||
ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
|
ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
|
||||||
|
|
||||||
ROM_REGION( 0x10000, "cpu6", 0 ) /* 64k for DSP communications */
|
ROM_REGION( 0x10000, "cpu6", 0 ) /* 64k for DSP communications */
|
||||||
@ -3810,7 +3808,7 @@ ROM_START( steeltalp )
|
|||||||
ROM_LOAD( "136087-5001.1f", 0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
|
ROM_LOAD( "136087-5001.1f", 0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
|
||||||
ROM_CONTINUE( 0x004000, 0x00c000 )
|
ROM_CONTINUE( 0x004000, 0x00c000 )
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "asic65", 0 ) /* 64k for ASIC65 */
|
ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* 64k for ASIC65 */
|
||||||
ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
|
ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
|
||||||
|
|
||||||
ROM_REGION( 0x10000, "cpu6", 0 ) /* 64k for DSP communications */
|
ROM_REGION( 0x10000, "cpu6", 0 ) /* 64k for DSP communications */
|
||||||
@ -3867,7 +3865,7 @@ ROM_START( strtdriv )
|
|||||||
ROM_LOAD16_BYTE( "136091-0016.200y", 0x0e0000, 0x010000, CRC(f85ad532) SHA1(f9d2480104a7487c23d33b05aa044b7f4ca08c67) )
|
ROM_LOAD16_BYTE( "136091-0016.200y", 0x0e0000, 0x010000, CRC(f85ad532) SHA1(f9d2480104a7487c23d33b05aa044b7f4ca08c67) )
|
||||||
ROM_LOAD16_BYTE( "136091-0015.210y", 0x0e0001, 0x010000, CRC(a2e406f3) SHA1(a7266508011c892cb1032fa4d77ccbafedc844e8) )
|
ROM_LOAD16_BYTE( "136091-0015.210y", 0x0e0001, 0x010000, CRC(a2e406f3) SHA1(a7266508011c892cb1032fa4d77ccbafedc844e8) )
|
||||||
|
|
||||||
ROM_REGION( 0x10000 + 0x10000, "asic65", 0 ) /* dummy region for ADSP 2105 */
|
ROM_REGION( 0x10000 + 0x10000, "asic65:asic65cpu", 0 ) /* dummy region for ADSP 2105 */
|
||||||
ROM_LOAD( "136091-0033.10j", 0x000000, 0x010000, CRC(57504ab6) SHA1(ec8361b7da964c07ca0da48a87537badc3986fe0) )
|
ROM_LOAD( "136091-0033.10j", 0x000000, 0x010000, CRC(57504ab6) SHA1(ec8361b7da964c07ca0da48a87537badc3986fe0) )
|
||||||
|
|
||||||
ROM_REGION( 0x60000, "user1", 0 ) /* 384k for object ROM */
|
ROM_REGION( 0x60000, "user1", 0 ) /* 384k for object ROM */
|
||||||
@ -3920,7 +3918,7 @@ ROM_START( hdrivair )
|
|||||||
ROM_LOAD16_BYTE( "coprochi.bin",0x1c0000, 0x20000, CRC(5d2ca109) SHA1(e1a94d3fbfd5d542732555bf60268e73d66b3a06) )
|
ROM_LOAD16_BYTE( "coprochi.bin",0x1c0000, 0x20000, CRC(5d2ca109) SHA1(e1a94d3fbfd5d542732555bf60268e73d66b3a06) )
|
||||||
ROM_LOAD16_BYTE( "coproclo.bin",0x1c0001, 0x20000, CRC(5f98b04d) SHA1(9c4fa4092fd85f1d67be44f2ff91a907a87db51a) )
|
ROM_LOAD16_BYTE( "coproclo.bin",0x1c0001, 0x20000, CRC(5f98b04d) SHA1(9c4fa4092fd85f1d67be44f2ff91a907a87db51a) )
|
||||||
|
|
||||||
ROM_REGION( 0x10000 + 0x10000, "asic65", 0 ) /* dummy region for ADSP 2105 */
|
ROM_REGION( 0x10000 + 0x10000, "asic65:asic65cpu", 0 ) /* dummy region for ADSP 2105 */
|
||||||
ROM_LOAD( "sboot.bin", 0x000000, 0x010000, CRC(cde4d010) SHA1(853f4b813ff70fe74cd87e92131c46fca045610d) )
|
ROM_LOAD( "sboot.bin", 0x000000, 0x010000, CRC(cde4d010) SHA1(853f4b813ff70fe74cd87e92131c46fca045610d) )
|
||||||
|
|
||||||
ROM_REGION( 0xc0000, "user1", 0 ) /* 768k for object ROM */
|
ROM_REGION( 0xc0000, "user1", 0 ) /* 768k for object ROM */
|
||||||
@ -3980,7 +3978,7 @@ ROM_START( hdrivairp )
|
|||||||
ROM_REGION( 0x10000 + 0x10000, "dsp32", 0 ) /* dummy region for ADSP 2105 */
|
ROM_REGION( 0x10000 + 0x10000, "dsp32", 0 ) /* dummy region for ADSP 2105 */
|
||||||
ROM_LOAD( "sboota.bin", 0x10000 + 0x00000, 0x10000, CRC(3ef819cd) SHA1(c547b869a3a37a82fb46584fe0ef0cfe21a4f882) )
|
ROM_LOAD( "sboota.bin", 0x10000 + 0x00000, 0x10000, CRC(3ef819cd) SHA1(c547b869a3a37a82fb46584fe0ef0cfe21a4f882) )
|
||||||
|
|
||||||
ROM_REGION( 0x10000 + 0x10000, "asic65", 0 ) /* dummy region for ADSP 2105 */
|
ROM_REGION( 0x10000 + 0x10000, "asic65:asic65cpu", 0 ) /* dummy region for ADSP 2105 */
|
||||||
ROM_LOAD( "xboota.bin", 0x10000 + 0x00000, 0x10000, CRC(d9c49901) SHA1(9f90ae3a47eb1ef00c3ec3661f60402c2eae2108) )
|
ROM_LOAD( "xboota.bin", 0x10000 + 0x00000, 0x10000, CRC(d9c49901) SHA1(9f90ae3a47eb1ef00c3ec3661f60402c2eae2108) )
|
||||||
|
|
||||||
ROM_REGION( 0xc0000, "user1", 0 ) /* 768k for object ROM */
|
ROM_REGION( 0xc0000, "user1", 0 ) /* 768k for object ROM */
|
||||||
@ -4191,16 +4189,13 @@ void harddriv_state::init_dsk()
|
|||||||
m_dsk_zram = (UINT16 *)(usr3 + 0x50000);
|
m_dsk_zram = (UINT16 *)(usr3 + 0x50000);
|
||||||
|
|
||||||
/* install ASIC65 */
|
/* install ASIC65 */
|
||||||
m_maincpu->space(AS_PROGRAM).install_legacy_write_handler(0x914000, 0x917fff, FUNC(asic65_data_w));
|
m_maincpu->space(AS_PROGRAM).install_write_handler(0x914000, 0x917fff, write16_delegate(FUNC(asic65_device::data_w), (asic65_device*)m_asic65));
|
||||||
m_maincpu->space(AS_PROGRAM).install_legacy_read_handler(0x914000, 0x917fff, FUNC(asic65_r));
|
m_maincpu->space(AS_PROGRAM).install_read_handler(0x914000, 0x917fff, read16_delegate(FUNC(asic65_device::read), (asic65_device*)m_asic65));
|
||||||
m_maincpu->space(AS_PROGRAM).install_legacy_read_handler(0x918000, 0x91bfff, FUNC(asic65_io_r));
|
m_maincpu->space(AS_PROGRAM).install_read_handler(0x918000, 0x91bfff, read16_delegate(FUNC(asic65_device::io_r), (asic65_device*)m_asic65));
|
||||||
|
|
||||||
/* install extra ROM */
|
/* install extra ROM */
|
||||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x940000, 0x9fffff, read16_delegate(FUNC(harddriv_state::hd68k_dsk_small_rom_r), this));
|
m_maincpu->space(AS_PROGRAM).install_read_handler(0x940000, 0x9fffff, read16_delegate(FUNC(harddriv_state::hd68k_dsk_small_rom_r), this));
|
||||||
m_dsk_rom = (UINT16 *)(usr3 + 0x00000);
|
m_dsk_rom = (UINT16 *)(usr3 + 0x00000);
|
||||||
|
|
||||||
/* set up the ASIC65 */
|
|
||||||
asic65_config(machine(), ASIC65_STANDARD);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -4210,9 +4205,9 @@ void harddriv_state::init_dsk2()
|
|||||||
UINT8 *usr3 = memregion("user3")->base();
|
UINT8 *usr3 = memregion("user3")->base();
|
||||||
|
|
||||||
/* install ASIC65 */
|
/* install ASIC65 */
|
||||||
m_maincpu->space(AS_PROGRAM).install_legacy_write_handler(0x824000, 0x824003, FUNC(asic65_data_w));
|
m_maincpu->space(AS_PROGRAM).install_write_handler(0x824000, 0x824003, write16_delegate(FUNC(asic65_device::data_w), (asic65_device*)m_asic65));
|
||||||
m_maincpu->space(AS_PROGRAM).install_legacy_read_handler(0x824000, 0x824003, FUNC(asic65_r));
|
m_maincpu->space(AS_PROGRAM).install_read_handler(0x824000, 0x824003, read16_delegate(FUNC(asic65_device::read), (asic65_device*)m_asic65));
|
||||||
m_maincpu->space(AS_PROGRAM).install_legacy_read_handler(0x825000, 0x825001, FUNC(asic65_io_r));
|
m_maincpu->space(AS_PROGRAM).install_read_handler(0x825000, 0x825001, read16_delegate(FUNC(asic65_device::io_r), (asic65_device*)m_asic65));
|
||||||
|
|
||||||
/* install ASIC61 */
|
/* install ASIC61 */
|
||||||
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x827000, 0x8277ff, read16_delegate(FUNC(harddriv_state::hd68k_dsk_dsp32_r), this), write16_delegate(FUNC(harddriv_state::hd68k_dsk_dsp32_w), this));
|
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x827000, 0x8277ff, read16_delegate(FUNC(harddriv_state::hd68k_dsk_dsp32_r), this), write16_delegate(FUNC(harddriv_state::hd68k_dsk_dsp32_w), this));
|
||||||
@ -4227,9 +4222,6 @@ void harddriv_state::init_dsk2()
|
|||||||
/* install extra ROM */
|
/* install extra ROM */
|
||||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x900000, 0x9fffff, read16_delegate(FUNC(harddriv_state::hd68k_dsk_rom_r), this));
|
m_maincpu->space(AS_PROGRAM).install_read_handler(0x900000, 0x9fffff, read16_delegate(FUNC(harddriv_state::hd68k_dsk_rom_r), this));
|
||||||
m_dsk_rom = (UINT16 *)(usr3 + 0x000000);
|
m_dsk_rom = (UINT16 *)(usr3 + 0x000000);
|
||||||
|
|
||||||
/* set up the ASIC65 */
|
|
||||||
asic65_config(machine(), ASIC65_STANDARD);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -4237,12 +4229,9 @@ void harddriv_state::init_dsk2()
|
|||||||
void harddriv_state::init_dspcom()
|
void harddriv_state::init_dspcom()
|
||||||
{
|
{
|
||||||
/* install ASIC65 */
|
/* install ASIC65 */
|
||||||
m_maincpu->space(AS_PROGRAM).install_legacy_write_handler(0x900000, 0x900003, FUNC(asic65_data_w));
|
m_maincpu->space(AS_PROGRAM).install_write_handler(0x900000, 0x900003, write16_delegate(FUNC(asic65_device::data_w), (asic65_device*)m_asic65));
|
||||||
m_maincpu->space(AS_PROGRAM).install_legacy_read_handler(0x900000, 0x900003, FUNC(asic65_r));
|
m_maincpu->space(AS_PROGRAM).install_read_handler(0x900000, 0x900003, read16_delegate(FUNC(asic65_device::read), (asic65_device*)m_asic65));
|
||||||
m_maincpu->space(AS_PROGRAM).install_legacy_read_handler(0x901000, 0x910001, FUNC(asic65_io_r));
|
m_maincpu->space(AS_PROGRAM).install_read_handler(0x901000, 0x910001, read16_delegate(FUNC(asic65_device::io_r), (asic65_device*)m_asic65));
|
||||||
|
|
||||||
/* set up the ASIC65 */
|
|
||||||
asic65_config(machine(), ASIC65_STEELTAL);
|
|
||||||
|
|
||||||
/* install DSPCOM control */
|
/* install DSPCOM control */
|
||||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0x904000, 0x90401f, write16_delegate(FUNC(harddriv_state::hddspcom_control_w), this));
|
m_maincpu->space(AS_PROGRAM).install_write_handler(0x904000, 0x90401f, write16_delegate(FUNC(harddriv_state::hddspcom_control_w), this));
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include "machine/atarigen.h"
|
#include "machine/atarigen.h"
|
||||||
#include "audio/atarijsa.h"
|
#include "audio/atarijsa.h"
|
||||||
#include "cpu/m68000/m68000.h"
|
#include "cpu/m68000/m68000.h"
|
||||||
|
#include "machine/asic65.h"
|
||||||
|
|
||||||
class atarig42_state : public atarigen_state
|
class atarig42_state : public atarigen_state
|
||||||
{
|
{
|
||||||
@ -20,6 +21,7 @@ public:
|
|||||||
m_playfield_tilemap(*this, "playfield"),
|
m_playfield_tilemap(*this, "playfield"),
|
||||||
m_alpha_tilemap(*this, "alpha"),
|
m_alpha_tilemap(*this, "alpha"),
|
||||||
m_rle(*this, "rle"),
|
m_rle(*this, "rle"),
|
||||||
|
m_asic65(*this, "asic65"),
|
||||||
m_mo_command(*this, "mo_command") { }
|
m_mo_command(*this, "mo_command") { }
|
||||||
|
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
@ -28,6 +30,7 @@ public:
|
|||||||
required_device<tilemap_device> m_playfield_tilemap;
|
required_device<tilemap_device> m_playfield_tilemap;
|
||||||
required_device<tilemap_device> m_alpha_tilemap;
|
required_device<tilemap_device> m_alpha_tilemap;
|
||||||
required_device<atari_rle_objects_device> m_rle;
|
required_device<atari_rle_objects_device> m_rle;
|
||||||
|
required_device<asic65_device> m_asic65;
|
||||||
|
|
||||||
UINT16 m_playfield_base;
|
UINT16 m_playfield_base;
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
#include "sound/dac.h"
|
#include "sound/dac.h"
|
||||||
#include "machine/atarigen.h"
|
#include "machine/atarigen.h"
|
||||||
#include "machine/n68681.h"
|
#include "machine/n68681.h"
|
||||||
|
#include "machine/asic65.h"
|
||||||
|
|
||||||
#define HARDDRIV_MASTER_CLOCK XTAL_32MHz
|
#define HARDDRIV_MASTER_CLOCK XTAL_32MHz
|
||||||
#define HARDDRIV_GSP_CLOCK XTAL_48MHz
|
#define HARDDRIV_GSP_CLOCK XTAL_48MHz
|
||||||
@ -53,7 +54,8 @@ public:
|
|||||||
m_ds3sdsp_internal_timer(*this, "ds3sdsp_timer"),
|
m_ds3sdsp_internal_timer(*this, "ds3sdsp_timer"),
|
||||||
m_ds3xdsp_internal_timer(*this, "ds3xdsp_timer"),
|
m_ds3xdsp_internal_timer(*this, "ds3xdsp_timer"),
|
||||||
m_dac(*this, "dac"),
|
m_dac(*this, "dac"),
|
||||||
m_duart(*this, "duartn68681") { }
|
m_duart(*this, "duartn68681"),
|
||||||
|
m_asic65(*this, "asic65") { }
|
||||||
|
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
required_device<tms34010_device> m_gsp;
|
required_device<tms34010_device> m_gsp;
|
||||||
@ -282,6 +284,7 @@ public:
|
|||||||
DECLARE_WRITE16_MEMBER(hdsnddsp_dac_w);
|
DECLARE_WRITE16_MEMBER(hdsnddsp_dac_w);
|
||||||
optional_device<dac_device> m_dac;
|
optional_device<dac_device> m_dac;
|
||||||
required_device<duartn68681_device> m_duart;
|
required_device<duartn68681_device> m_duart;
|
||||||
|
optional_device<asic65_device> m_asic65;
|
||||||
DECLARE_WRITE_LINE_MEMBER(harddriv_duart_irq_handler);
|
DECLARE_WRITE_LINE_MEMBER(harddriv_duart_irq_handler);
|
||||||
|
|
||||||
/*----------- defined in audio/harddriv.c -----------*/
|
/*----------- defined in audio/harddriv.c -----------*/
|
||||||
|
@ -7,43 +7,12 @@
|
|||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "cpu/tms32010/tms32010.h"
|
|
||||||
#include "asic65.h"
|
#include "asic65.h"
|
||||||
|
|
||||||
|
|
||||||
#define LOG_ASIC 0
|
#define LOG_ASIC 0
|
||||||
|
|
||||||
|
|
||||||
/*************************************
|
|
||||||
*
|
|
||||||
* !$#@$ asic
|
|
||||||
*
|
|
||||||
*************************************/
|
|
||||||
|
|
||||||
static struct _asic65_t
|
|
||||||
{
|
|
||||||
UINT8 type;
|
|
||||||
int command;
|
|
||||||
UINT16 param[32];
|
|
||||||
UINT16 yorigin;
|
|
||||||
UINT8 param_index;
|
|
||||||
UINT8 result_index;
|
|
||||||
UINT8 reset_state;
|
|
||||||
UINT8 last_bank;
|
|
||||||
|
|
||||||
/* ROM-based interface states */
|
|
||||||
device_t *cpu;
|
|
||||||
UINT8 tfull;
|
|
||||||
UINT8 _68full;
|
|
||||||
UINT8 cmd;
|
|
||||||
UINT8 xflg;
|
|
||||||
UINT16 _68data;
|
|
||||||
UINT16 tdata;
|
|
||||||
|
|
||||||
FILE * log;
|
|
||||||
} asic65;
|
|
||||||
|
|
||||||
|
|
||||||
#define PARAM_WRITE 0
|
#define PARAM_WRITE 0
|
||||||
#define COMMAND_WRITE 1
|
#define COMMAND_WRITE 1
|
||||||
#define DATA_READ 2
|
#define DATA_READ 2
|
||||||
@ -113,139 +82,185 @@ static const UINT8 command_map[3][MAX_COMMANDS] =
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const device_type ASIC65 = &device_creator<asic65_device>;
|
||||||
|
|
||||||
|
asic65_device::asic65_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||||
/*************************************
|
: device_t(mconfig, ASIC65, "ASIC65", tag, owner, clock, "asic65", __FILE__),
|
||||||
*
|
m_asic65_type(0),
|
||||||
* Configure the chip
|
m_command(0),
|
||||||
*
|
m_yorigin(0x1800),
|
||||||
*************************************/
|
m_param_index(0),
|
||||||
|
m_result_index(0),
|
||||||
void asic65_config(running_machine &machine, int asictype)
|
m_reset_state(0),
|
||||||
|
m_last_bank(0),
|
||||||
|
m_ourcpu(*this, "asic65cpu"),
|
||||||
|
m_tfull(0),
|
||||||
|
m_68full(0),
|
||||||
|
m_cmd(0),
|
||||||
|
m_xflg(0),
|
||||||
|
m_68data(0),
|
||||||
|
m_tdata(0),
|
||||||
|
m_log(NULL)
|
||||||
{
|
{
|
||||||
memset(&asic65, 0, sizeof(asic65));
|
for (int i = 0; i < 32; i++)
|
||||||
asic65.type = asictype;
|
{
|
||||||
asic65.yorigin = 0x1800;
|
m_param[i] = 0;
|
||||||
if (asic65.type == ASIC65_ROMBASED)
|
}
|
||||||
asic65.cpu = machine.device("asic65");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_config_complete - perform any
|
||||||
|
// operations now that the configuration is
|
||||||
|
// complete
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void asic65_device::device_config_complete()
|
||||||
/*************************************
|
|
||||||
*
|
|
||||||
* Reset the chip
|
|
||||||
*
|
|
||||||
*************************************/
|
|
||||||
|
|
||||||
void asic65_reset(running_machine &machine, int state)
|
|
||||||
{
|
{
|
||||||
address_space &space = machine.device("maincpu")->memory().space(AS_PROGRAM);
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_start - device-specific startup
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void asic65_device::device_start()
|
||||||
|
{
|
||||||
|
save_item(NAME(m_asic65_type));
|
||||||
|
save_item(NAME(m_command));
|
||||||
|
save_item(NAME(m_yorigin));
|
||||||
|
save_item(NAME(m_param_index));
|
||||||
|
save_item(NAME(m_result_index));
|
||||||
|
save_item(NAME(m_reset_state));
|
||||||
|
save_item(NAME(m_last_bank));
|
||||||
|
save_item(NAME(m_tfull));
|
||||||
|
save_item(NAME(m_68full));
|
||||||
|
save_item(NAME(m_cmd));
|
||||||
|
save_item(NAME(m_xflg));
|
||||||
|
save_item(NAME(m_68data));
|
||||||
|
save_item(NAME(m_tdata));
|
||||||
|
save_item(NAME(m_param));
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_reset - device-specific startup
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void asic65_device::device_reset()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void asic65_device::reset_line(int state)
|
||||||
|
{
|
||||||
|
address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM);
|
||||||
|
|
||||||
/* rom-based means reset and clear states */
|
/* rom-based means reset and clear states */
|
||||||
if (asic65.cpu != NULL)
|
if (m_asic65_type == ASIC65_ROMBASED)
|
||||||
asic65.cpu->execute().set_input_line(INPUT_LINE_RESET, state ? ASSERT_LINE : CLEAR_LINE);
|
m_ourcpu->set_input_line(INPUT_LINE_RESET, state ? ASSERT_LINE : CLEAR_LINE);
|
||||||
|
|
||||||
/* otherwise, do it manually */
|
/* otherwise, do it manually */
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
machine.device<cpu_device>("asic65")->suspend(SUSPEND_REASON_DISABLE, 1);
|
m_ourcpu->suspend(SUSPEND_REASON_DISABLE, 1);
|
||||||
|
|
||||||
/* if reset is being signalled, clear everything */
|
/* if reset is being signalled, clear everything */
|
||||||
if (state && !asic65.reset_state)
|
if (state && !m_reset_state)
|
||||||
asic65.command = -1;
|
m_command = -1;
|
||||||
|
|
||||||
/* if reset is going high, latch the command */
|
/* if reset is going high, latch the command */
|
||||||
else if (!state && asic65.reset_state)
|
else if (!state && m_reset_state)
|
||||||
{
|
{
|
||||||
if (asic65.command != -1)
|
if (m_command != -1)
|
||||||
asic65_data_w(space, 1, asic65.command, 0xffff);
|
data_w(space, 1, m_command, 0xffff);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* update the state */
|
/* update the state */
|
||||||
asic65.reset_state = state;
|
m_reset_state = state;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
*
|
*
|
||||||
* Handle writes to the chip
|
* Handle writes to the chip
|
||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
static TIMER_CALLBACK( m68k_asic65_deferred_w )
|
void asic65_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
||||||
{
|
{
|
||||||
asic65.tfull = 1;
|
switch (id)
|
||||||
asic65.cmd = param >> 16;
|
{
|
||||||
asic65.tdata = param;
|
case TIMER_M68K_ASIC65_DEFERRED_W:
|
||||||
if (asic65.cpu != NULL)
|
m_tfull = 1;
|
||||||
asic65.cpu->execute().set_input_line(0, ASSERT_LINE);
|
m_cmd = param >> 16;
|
||||||
|
m_tdata = param;
|
||||||
|
if (m_asic65_type == ASIC65_ROMBASED)
|
||||||
|
m_ourcpu->set_input_line(0, ASSERT_LINE);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
assert_always(FALSE, "Unknown id in asic65_device::device_timer");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
WRITE16_HANDLER( asic65_data_w )
|
WRITE16_MEMBER( asic65_device::data_w )
|
||||||
{
|
{
|
||||||
/* logging */
|
/* logging */
|
||||||
if (LOG_ASIC && !asic65.log) asic65.log = fopen("asic65.log", "w");
|
if (LOG_ASIC && !m_log) m_log = fopen("m_log", "w");
|
||||||
|
|
||||||
/* rom-based use a deferred write mechanism */
|
/* rom-based use a deferred write mechanism */
|
||||||
if (asic65.type == ASIC65_ROMBASED)
|
if (m_asic65_type == ASIC65_ROMBASED)
|
||||||
{
|
{
|
||||||
space.machine().scheduler().synchronize(FUNC(m68k_asic65_deferred_w), data | (offset << 16));
|
synchronize(TIMER_M68K_ASIC65_DEFERRED_W, data | (offset << 16));
|
||||||
space.machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(20));
|
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(20));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* parameters go to offset 0 */
|
/* parameters go to offset 0 */
|
||||||
if (!(offset & 1))
|
if (!(offset & 1))
|
||||||
{
|
{
|
||||||
if (asic65.log) fprintf(asic65.log, " W=%04X", data);
|
if (m_log) fprintf(m_log, " W=%04X", data);
|
||||||
|
|
||||||
/* add to the parameter list, but don't overflow */
|
/* add to the parameter list, but don't overflow */
|
||||||
asic65.param[asic65.param_index++] = data;
|
m_param[m_param_index++] = data;
|
||||||
if (asic65.param_index >= 32)
|
if (m_param_index >= 32)
|
||||||
asic65.param_index = 32;
|
m_param_index = 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* commands go to offset 2 */
|
/* commands go to offset 2 */
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int command = (data < MAX_COMMANDS) ? command_map[asic65.type][data] : OP_UNKNOWN;
|
int command = (data < MAX_COMMANDS) ? command_map[m_asic65_type][data] : OP_UNKNOWN;
|
||||||
if (asic65.log) fprintf(asic65.log, "\n(%06X)%c%04X:", space.device().safe_pcbase(), (command == OP_UNKNOWN) ? '*' : ' ', data);
|
if (m_log) fprintf(m_log, "\n(%06X)%c%04X:", safe_pcbase(), (command == OP_UNKNOWN) ? '*' : ' ', data);
|
||||||
|
|
||||||
/* set the command number and reset the parameter/result indices */
|
/* set the command number and reset the parameter/result indices */
|
||||||
asic65.command = data;
|
m_command = data;
|
||||||
asic65.result_index = asic65.param_index = 0;
|
m_result_index = m_param_index = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
READ16_HANDLER( asic65_r )
|
READ16_MEMBER( asic65_device::read )
|
||||||
{
|
{
|
||||||
int command = (asic65.command < MAX_COMMANDS) ? command_map[asic65.type][asic65.command] : OP_UNKNOWN;
|
int command = (m_command < MAX_COMMANDS) ? command_map[m_asic65_type][m_command] : OP_UNKNOWN;
|
||||||
INT64 element, result64 = 0;
|
INT64 element, result64 = 0;
|
||||||
UINT16 result = 0;
|
UINT16 result = 0;
|
||||||
|
|
||||||
/* rom-based just returns latched data */
|
/* rom-based just returns latched data */
|
||||||
if (asic65.type == ASIC65_ROMBASED)
|
if (m_asic65_type == ASIC65_ROMBASED)
|
||||||
{
|
{
|
||||||
asic65._68full = 0;
|
m_68full = 0;
|
||||||
space.machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(5));
|
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(5));
|
||||||
return asic65._68data;
|
return m_68data;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* update results */
|
/* update results */
|
||||||
switch (command)
|
switch (command)
|
||||||
{
|
{
|
||||||
case OP_UNKNOWN: /* return bogus data */
|
case OP_UNKNOWN: /* return bogus data */
|
||||||
popmessage("ASIC65: Unknown cmd %02X", asic65.command);
|
popmessage("ASIC65: Unknown cmd %02X", m_command);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OP_REFLECT: /* reflect data */
|
case OP_REFLECT: /* reflect data */
|
||||||
if (asic65.param_index >= 1)
|
if (m_param_index >= 1)
|
||||||
result = asic65.param[--asic65.param_index];
|
result = m_param[--m_param_index];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OP_CHECKSUM: /* compute checksum (should be XX27) */
|
case OP_CHECKSUM: /* compute checksum (should be XX27) */
|
||||||
@ -261,24 +276,24 @@ READ16_HANDLER( asic65_r )
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case OP_RESET: /* reset */
|
case OP_RESET: /* reset */
|
||||||
asic65.result_index = asic65.param_index = 0;
|
m_result_index = m_param_index = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OP_SIN: /* sin */
|
case OP_SIN: /* sin */
|
||||||
if (asic65.param_index >= 1)
|
if (m_param_index >= 1)
|
||||||
result = (int)(16384. * sin(M_PI * (double)(INT16)asic65.param[0] / 32768.));
|
result = (int)(16384. * sin(M_PI * (double)(INT16)m_param[0] / 32768.));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OP_COS: /* cos */
|
case OP_COS: /* cos */
|
||||||
if (asic65.param_index >= 1)
|
if (m_param_index >= 1)
|
||||||
result = (int)(16384. * cos(M_PI * (double)(INT16)asic65.param[0] / 32768.));
|
result = (int)(16384. * cos(M_PI * (double)(INT16)m_param[0] / 32768.));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OP_ATAN: /* vector angle */
|
case OP_ATAN: /* vector angle */
|
||||||
if (asic65.param_index >= 4)
|
if (m_param_index >= 4)
|
||||||
{
|
{
|
||||||
INT32 xint = (INT32)((asic65.param[0] << 16) | asic65.param[1]);
|
INT32 xint = (INT32)((m_param[0] << 16) | m_param[1]);
|
||||||
INT32 yint = (INT32)((asic65.param[2] << 16) | asic65.param[3]);
|
INT32 yint = (INT32)((m_param[2] << 16) | m_param[3]);
|
||||||
double a = atan2((double)yint, (double)xint);
|
double a = atan2((double)yint, (double)xint);
|
||||||
result = (INT16)(a * 32768. / M_PI);
|
result = (INT16)(a * 32768. / M_PI);
|
||||||
}
|
}
|
||||||
@ -287,84 +302,84 @@ READ16_HANDLER( asic65_r )
|
|||||||
case OP_TMATRIXMULT: /* matrix multiply by transpose */
|
case OP_TMATRIXMULT: /* matrix multiply by transpose */
|
||||||
/* if this is wrong, the labels on the car selection screen */
|
/* if this is wrong, the labels on the car selection screen */
|
||||||
/* in Race Drivin' will be off */
|
/* in Race Drivin' will be off */
|
||||||
if (asic65.param_index >= 9+6)
|
if (m_param_index >= 9+6)
|
||||||
{
|
{
|
||||||
INT32 v0 = (INT32)((asic65.param[9] << 16) | asic65.param[10]);
|
INT32 v0 = (INT32)((m_param[9] << 16) | m_param[10]);
|
||||||
INT32 v1 = (INT32)((asic65.param[11] << 16) | asic65.param[12]);
|
INT32 v1 = (INT32)((m_param[11] << 16) | m_param[12]);
|
||||||
INT32 v2 = (INT32)((asic65.param[13] << 16) | asic65.param[14]);
|
INT32 v2 = (INT32)((m_param[13] << 16) | m_param[14]);
|
||||||
|
|
||||||
/* 2 results per element */
|
/* 2 results per element */
|
||||||
switch (asic65.result_index / 2)
|
switch (m_result_index / 2)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
result64 = (INT64)v0 * (INT16)asic65.param[0] +
|
result64 = (INT64)v0 * (INT16)m_param[0] +
|
||||||
(INT64)v1 * (INT16)asic65.param[3] +
|
(INT64)v1 * (INT16)m_param[3] +
|
||||||
(INT64)v2 * (INT16)asic65.param[6];
|
(INT64)v2 * (INT16)m_param[6];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
result64 = (INT64)v0 * (INT16)asic65.param[1] +
|
result64 = (INT64)v0 * (INT16)m_param[1] +
|
||||||
(INT64)v1 * (INT16)asic65.param[4] +
|
(INT64)v1 * (INT16)m_param[4] +
|
||||||
(INT64)v2 * (INT16)asic65.param[7];
|
(INT64)v2 * (INT16)m_param[7];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
result64 = (INT64)v0 * (INT16)asic65.param[2] +
|
result64 = (INT64)v0 * (INT16)m_param[2] +
|
||||||
(INT64)v1 * (INT16)asic65.param[5] +
|
(INT64)v1 * (INT16)m_param[5] +
|
||||||
(INT64)v2 * (INT16)asic65.param[8];
|
(INT64)v2 * (INT16)m_param[8];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* remove lower 14 bits and pass back either upper or lower words */
|
/* remove lower 14 bits and pass back either upper or lower words */
|
||||||
result64 >>= 14;
|
result64 >>= 14;
|
||||||
result = (asic65.result_index & 1) ? (result64 & 0xffff) : ((result64 >> 16) & 0xffff);
|
result = (m_result_index & 1) ? (result64 & 0xffff) : ((result64 >> 16) & 0xffff);
|
||||||
asic65.result_index++;
|
m_result_index++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OP_MATRIXMULT: /* matrix multiply???? */
|
case OP_MATRIXMULT: /* matrix multiply???? */
|
||||||
if (asic65.param_index >= 9+6)
|
if (m_param_index >= 9+6)
|
||||||
{
|
{
|
||||||
INT32 v0 = (INT32)((asic65.param[9] << 16) | asic65.param[10]);
|
INT32 v0 = (INT32)((m_param[9] << 16) | m_param[10]);
|
||||||
INT32 v1 = (INT32)((asic65.param[11] << 16) | asic65.param[12]);
|
INT32 v1 = (INT32)((m_param[11] << 16) | m_param[12]);
|
||||||
INT32 v2 = (INT32)((asic65.param[13] << 16) | asic65.param[14]);
|
INT32 v2 = (INT32)((m_param[13] << 16) | m_param[14]);
|
||||||
|
|
||||||
/* 2 results per element */
|
/* 2 results per element */
|
||||||
switch (asic65.result_index / 2)
|
switch (m_result_index / 2)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
result64 = (INT64)v0 * (INT16)asic65.param[0] +
|
result64 = (INT64)v0 * (INT16)m_param[0] +
|
||||||
(INT64)v1 * (INT16)asic65.param[1] +
|
(INT64)v1 * (INT16)m_param[1] +
|
||||||
(INT64)v2 * (INT16)asic65.param[2];
|
(INT64)v2 * (INT16)m_param[2];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
result64 = (INT64)v0 * (INT16)asic65.param[3] +
|
result64 = (INT64)v0 * (INT16)m_param[3] +
|
||||||
(INT64)v1 * (INT16)asic65.param[4] +
|
(INT64)v1 * (INT16)m_param[4] +
|
||||||
(INT64)v2 * (INT16)asic65.param[5];
|
(INT64)v2 * (INT16)m_param[5];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
result64 = (INT64)v0 * (INT16)asic65.param[6] +
|
result64 = (INT64)v0 * (INT16)m_param[6] +
|
||||||
(INT64)v1 * (INT16)asic65.param[7] +
|
(INT64)v1 * (INT16)m_param[7] +
|
||||||
(INT64)v2 * (INT16)asic65.param[8];
|
(INT64)v2 * (INT16)m_param[8];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* remove lower 14 bits and pass back either upper or lower words */
|
/* remove lower 14 bits and pass back either upper or lower words */
|
||||||
result64 >>= 14;
|
result64 >>= 14;
|
||||||
result = (asic65.result_index & 1) ? (result64 & 0xffff) : ((result64 >> 16) & 0xffff);
|
result = (m_result_index & 1) ? (result64 & 0xffff) : ((result64 >> 16) & 0xffff);
|
||||||
asic65.result_index++;
|
m_result_index++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OP_YORIGIN:
|
case OP_YORIGIN:
|
||||||
if (asic65.param_index >= 1)
|
if (m_param_index >= 1)
|
||||||
asic65.yorigin = asic65.param[asic65.param_index - 1];
|
m_yorigin = m_param[m_param_index - 1];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OP_TRANSFORM: /* 3d transform */
|
case OP_TRANSFORM: /* 3d transform */
|
||||||
if (asic65.param_index >= 2)
|
if (m_param_index >= 2)
|
||||||
{
|
{
|
||||||
/* param 0 == 1/z */
|
/* param 0 == 1/z */
|
||||||
/* param 1 == height */
|
/* param 1 == height */
|
||||||
@ -373,29 +388,29 @@ READ16_HANDLER( asic65_r )
|
|||||||
/* return 0 == scale factor for 1/z */
|
/* return 0 == scale factor for 1/z */
|
||||||
/* return 1 == transformed X */
|
/* return 1 == transformed X */
|
||||||
/* return 2 == transformed Y, taking height into account */
|
/* return 2 == transformed Y, taking height into account */
|
||||||
element = (INT16)asic65.param[0];
|
element = (INT16)m_param[0];
|
||||||
if (asic65.param_index == 2)
|
if (m_param_index == 2)
|
||||||
{
|
{
|
||||||
result64 = (element * (INT16)asic65.param[1]) >> 8;
|
result64 = (element * (INT16)m_param[1]) >> 8;
|
||||||
result64 -= 1;
|
result64 -= 1;
|
||||||
if (result64 > 0x3fff) result64 = 0;
|
if (result64 > 0x3fff) result64 = 0;
|
||||||
}
|
}
|
||||||
else if (asic65.param_index == 3)
|
else if (m_param_index == 3)
|
||||||
{
|
{
|
||||||
result64 = (element * (INT16)asic65.param[2]) >> 15;
|
result64 = (element * (INT16)m_param[2]) >> 15;
|
||||||
result64 += 0xa8;
|
result64 += 0xa8;
|
||||||
}
|
}
|
||||||
else if (asic65.param_index == 4)
|
else if (m_param_index == 4)
|
||||||
{
|
{
|
||||||
result64 = (INT16)((element * (INT16)asic65.param[3]) >> 10);
|
result64 = (INT16)((element * (INT16)m_param[3]) >> 10);
|
||||||
result64 = (INT16)asic65.yorigin - result64 - (result64 << 1);
|
result64 = (INT16)m_yorigin - result64 - (result64 << 1);
|
||||||
}
|
}
|
||||||
result = result64 & 0xffff;
|
result = result64 & 0xffff;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OP_INITBANKS: /* initialize banking */
|
case OP_INITBANKS: /* initialize banking */
|
||||||
asic65.last_bank = 0;
|
m_last_bank = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OP_SETBANK: /* set a bank */
|
case OP_SETBANK: /* set a bank */
|
||||||
@ -414,12 +429,12 @@ READ16_HANDLER( asic65_r )
|
|||||||
{ 0x77f0,0x77fe,0x77f2,0x77fc,0x77f4,0x77fa,0x77f6,0x77f8 },
|
{ 0x77f0,0x77fe,0x77f2,0x77fc,0x77f4,0x77fa,0x77f6,0x77f8 },
|
||||||
{ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 },
|
{ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 },
|
||||||
};
|
};
|
||||||
if (asic65.param_index >= 1)
|
if (m_param_index >= 1)
|
||||||
{
|
{
|
||||||
if (asic65.param_index < sizeof(banklist) && banklist[asic65.param[0]] < 4)
|
if (m_param_index < sizeof(banklist) && banklist[m_param[0]] < 4)
|
||||||
asic65.last_bank = banklist[asic65.param[0]];
|
m_last_bank = banklist[m_param[0]];
|
||||||
result = bankaddr[asic65.last_bank][(asic65.result_index < 8) ? asic65.result_index : 7];
|
result = bankaddr[m_last_bank][(m_result_index < 8) ? m_result_index : 7];
|
||||||
asic65.result_index++;
|
m_result_index++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -430,28 +445,28 @@ READ16_HANDLER( asic65_r )
|
|||||||
{
|
{
|
||||||
0x0eb2,0x1000,0x171b,0x3d28
|
0x0eb2,0x1000,0x171b,0x3d28
|
||||||
};
|
};
|
||||||
result = bankverify[asic65.last_bank];
|
result = bankverify[m_last_bank];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (LOG_ASIC && !asic65.log) asic65.log = fopen("asic65.log", "w");
|
if (LOG_ASIC && !m_log) m_log = fopen("m_log", "w");
|
||||||
if (asic65.log) fprintf(asic65.log, " (R=%04X)", result);
|
if (m_log) fprintf(m_log, " (R=%04X)", result);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
READ16_HANDLER( asic65_io_r )
|
READ16_MEMBER( asic65_device::io_r )
|
||||||
{
|
{
|
||||||
if (asic65.type == ASIC65_ROMBASED)
|
if (m_asic65_type == ASIC65_ROMBASED)
|
||||||
{
|
{
|
||||||
/* bit 15 = TFULL */
|
/* bit 15 = TFULL */
|
||||||
/* bit 14 = 68FULL */
|
/* bit 14 = 68FULL */
|
||||||
/* bit 13 = XFLG */
|
/* bit 13 = XFLG */
|
||||||
/* bit 12 = controlled by jumper */
|
/* bit 12 = controlled by jumper */
|
||||||
space.machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(5));
|
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(5));
|
||||||
return (asic65.tfull << 15) | (asic65._68full << 14) | (asic65.xflg << 13) | 0x0000;
|
return (m_tfull << 15) | (m_68full << 14) | (m_xflg << 13) | 0x0000;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -468,43 +483,43 @@ READ16_HANDLER( asic65_io_r )
|
|||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
static WRITE16_HANDLER( asic65_68k_w )
|
WRITE16_MEMBER( asic65_device::m68k_w )
|
||||||
{
|
{
|
||||||
asic65._68full = 1;
|
m_68full = 1;
|
||||||
asic65._68data = data;
|
m_68data = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static READ16_HANDLER( asic65_68k_r )
|
READ16_MEMBER( asic65_device::m68k_r )
|
||||||
{
|
{
|
||||||
asic65.tfull = 0;
|
m_tfull = 0;
|
||||||
if (asic65.cpu != NULL)
|
if (m_asic65_type == ASIC65_ROMBASED)
|
||||||
asic65.cpu->execute().set_input_line(0, CLEAR_LINE);
|
m_ourcpu->set_input_line(0, CLEAR_LINE);
|
||||||
return asic65.tdata;
|
return m_tdata;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static WRITE16_HANDLER( asic65_stat_w )
|
WRITE16_MEMBER( asic65_device::stat_w )
|
||||||
{
|
{
|
||||||
asic65.xflg = data & 1;
|
m_xflg = data & 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static READ16_HANDLER( asic65_stat_r )
|
READ16_MEMBER( asic65_device::stat_r )
|
||||||
{
|
{
|
||||||
/* bit 15 = 68FULL */
|
/* bit 15 = 68FULL */
|
||||||
/* bit 14 = TFULL */
|
/* bit 14 = TFULL */
|
||||||
/* bit 13 = CMD */
|
/* bit 13 = CMD */
|
||||||
/* bit 12 = controlled by jumper (0 = test?) */
|
/* bit 12 = controlled by jumper (0 = test?) */
|
||||||
return (asic65._68full << 15) | (asic65.tfull << 14) | (asic65.cmd << 13) | 0x1000;
|
return (m_68full << 15) | (m_tfull << 14) | (m_cmd << 13) | 0x1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static READ16_HANDLER( asci65_get_bio )
|
READ16_MEMBER( asic65_device::get_bio )
|
||||||
{
|
{
|
||||||
if (!asic65.tfull)
|
if (!m_tfull)
|
||||||
space.device().execute().spin_until_interrupt();
|
space.device().execute().spin_until_interrupt();
|
||||||
return asic65.tfull ? CLEAR_LINE : ASSERT_LINE;
|
return m_tfull ? CLEAR_LINE : ASSERT_LINE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -515,15 +530,15 @@ static READ16_HANDLER( asci65_get_bio )
|
|||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
static ADDRESS_MAP_START( asic65_program_map, AS_PROGRAM, 16, driver_device )
|
static ADDRESS_MAP_START( asic65_program_map, AS_PROGRAM, 16, asic65_device )
|
||||||
ADDRESS_MAP_UNMAP_HIGH
|
ADDRESS_MAP_UNMAP_HIGH
|
||||||
AM_RANGE(0x000, 0xfff) AM_ROM
|
AM_RANGE(0x000, 0xfff) AM_ROM
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( asic65_io_map, AS_IO, 16, driver_device )
|
static ADDRESS_MAP_START( asic65_io_map, AS_IO, 16, asic65_device )
|
||||||
AM_RANGE(0, 0) AM_MIRROR(6) AM_READWRITE_LEGACY(asic65_68k_r, asic65_68k_w)
|
AM_RANGE(0, 0) AM_MIRROR(6) AM_READWRITE(m68k_r, m68k_w)
|
||||||
AM_RANGE(1, 1) AM_MIRROR(6) AM_READWRITE_LEGACY(asic65_stat_r, asic65_stat_w)
|
AM_RANGE(1, 1) AM_MIRROR(6) AM_READWRITE(stat_r, stat_w)
|
||||||
AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ_LEGACY(asci65_get_bio)
|
AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(get_bio)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
|
||||||
@ -537,10 +552,20 @@ ADDRESS_MAP_END
|
|||||||
MACHINE_CONFIG_FRAGMENT( asic65 )
|
MACHINE_CONFIG_FRAGMENT( asic65 )
|
||||||
|
|
||||||
/* ASIC65 */
|
/* ASIC65 */
|
||||||
MCFG_CPU_ADD("asic65", TMS32010, 20000000)
|
MCFG_CPU_ADD("asic65cpu", TMS32010, 20000000)
|
||||||
MCFG_CPU_PROGRAM_MAP(asic65_program_map)
|
MCFG_CPU_PROGRAM_MAP(asic65_program_map)
|
||||||
MCFG_CPU_IO_MAP(asic65_io_map)
|
MCFG_CPU_IO_MAP(asic65_io_map)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// machine_config_additions - device-specific
|
||||||
|
// machine configurations
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
machine_config_constructor asic65_device::device_mconfig_additions() const
|
||||||
|
{
|
||||||
|
return MACHINE_CONFIG_NAME( asic65 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -5,16 +5,73 @@
|
|||||||
* Implementation of ASIC65
|
* Implementation of ASIC65
|
||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
|
#include "cpu/tms32010/tms32010.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
ASIC65_STANDARD,
|
||||||
|
ASIC65_STEELTAL,
|
||||||
|
ASIC65_GUARDIANS,
|
||||||
|
ASIC65_ROMBASED
|
||||||
|
};
|
||||||
|
|
||||||
#define ASIC65_STANDARD 0
|
class asic65_device : public device_t
|
||||||
#define ASIC65_STEELTAL 1
|
{
|
||||||
#define ASIC65_GUARDIANS 2
|
public:
|
||||||
#define ASIC65_ROMBASED 3
|
asic65_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||||
|
|
||||||
|
// (static) configuration helpers
|
||||||
|
static void set_type(device_t &device, int type) { downcast<asic65_device &>(device).m_asic65_type = type; }
|
||||||
|
|
||||||
void asic65_config(running_machine &machine, int asictype);
|
void reset_line(int state);
|
||||||
void asic65_reset(running_machine &machine, int state);
|
DECLARE_WRITE16_MEMBER( data_w );
|
||||||
DECLARE_WRITE16_HANDLER( asic65_data_w );
|
DECLARE_READ16_MEMBER( read );
|
||||||
DECLARE_READ16_HANDLER( asic65_r );
|
DECLARE_READ16_MEMBER( io_r );
|
||||||
DECLARE_READ16_HANDLER( asic65_io_r );
|
|
||||||
|
TIMER_CALLBACK_MEMBER( m68k_asic65_deferred_w );
|
||||||
|
WRITE16_MEMBER( m68k_w );
|
||||||
|
READ16_MEMBER( m68k_r );
|
||||||
|
WRITE16_MEMBER( stat_w );
|
||||||
|
READ16_MEMBER( stat_r );
|
||||||
|
READ16_MEMBER( get_bio );
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
TIMER_M68K_ASIC65_DEFERRED_W
|
||||||
|
};
|
||||||
|
|
||||||
MACHINE_CONFIG_EXTERN( asic65 );
|
protected:
|
||||||
|
// device-level overrides
|
||||||
|
virtual void device_config_complete();
|
||||||
|
virtual void device_start();
|
||||||
|
virtual void device_reset();
|
||||||
|
virtual machine_config_constructor device_mconfig_additions() const;
|
||||||
|
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
||||||
|
|
||||||
|
private:
|
||||||
|
UINT8 m_asic65_type;
|
||||||
|
int m_command;
|
||||||
|
UINT16 m_param[32];
|
||||||
|
UINT16 m_yorigin;
|
||||||
|
UINT8 m_param_index;
|
||||||
|
UINT8 m_result_index;
|
||||||
|
UINT8 m_reset_state;
|
||||||
|
UINT8 m_last_bank;
|
||||||
|
|
||||||
|
/* ROM-based interface states */
|
||||||
|
required_device<legacy_cpu_device> m_ourcpu;
|
||||||
|
UINT8 m_tfull;
|
||||||
|
UINT8 m_68full;
|
||||||
|
UINT8 m_cmd;
|
||||||
|
UINT8 m_xflg;
|
||||||
|
UINT16 m_68data;
|
||||||
|
UINT16 m_tdata;
|
||||||
|
|
||||||
|
FILE * m_log;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern const device_type ASIC65;
|
||||||
|
|
||||||
|
#define MCFG_ASIC65_ADD(_tag, _type) \
|
||||||
|
MCFG_DEVICE_ADD(_tag, ASIC65, 0) \
|
||||||
|
asic65_device::set_type(*device, _type);
|
||||||
|
@ -7,13 +7,7 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "cpu/tms34010/tms34010.h"
|
|
||||||
#include "cpu/adsp2100/adsp2100.h"
|
|
||||||
#include "cpu/m68000/m68000.h"
|
|
||||||
#include "cpu/dsp32/dsp32.h"
|
|
||||||
#include "sound/dac.h"
|
#include "sound/dac.h"
|
||||||
#include "machine/atarigen.h"
|
|
||||||
#include "machine/asic65.h"
|
|
||||||
#include "includes/slapstic.h"
|
#include "includes/slapstic.h"
|
||||||
#include "includes/harddriv.h"
|
#include "includes/harddriv.h"
|
||||||
|
|
||||||
@ -1543,7 +1537,7 @@ WRITE16_MEMBER( harddriv_state::hd68k_dsk_control_w )
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 4: /* ASIC65 reset */
|
case 4: /* ASIC65 reset */
|
||||||
asic65_reset(space.machine(), !val);
|
m_asic65->reset_line(!val);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7: /* LED */
|
case 7: /* LED */
|
||||||
@ -1686,7 +1680,7 @@ WRITE16_MEMBER( harddriv_state::hddspcom_control_w )
|
|||||||
switch (offset & 7)
|
switch (offset & 7)
|
||||||
{
|
{
|
||||||
case 2: /* ASIC65 reset */
|
case 2: /* ASIC65 reset */
|
||||||
asic65_reset(space.machine(), !val);
|
m_asic65->reset_line(!val);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user