mirror of
https://github.com/holub/mame
synced 2025-04-21 07:52:35 +03:00
- Added read/write handlers for the "natural" hook-ups of an AY-8910 chip
- Modified a couple of drivers to use the new handlers - Added crystals for NYNY and Red Alert
This commit is contained in:
parent
b6a82f1762
commit
1a17348787
@ -61,10 +61,12 @@ enum
|
||||
XTAL_10_595MHz = 10595000, /* Mad Alien */
|
||||
XTAL_11MHz = 11000000, /* Mario I8039 sound */
|
||||
XTAL_11_0592MHz = 11059200, /* Lethal Justice */
|
||||
XTAL_11_2MHz = 11200000, /* New York, New York */
|
||||
XTAL_11_289MHz = 11289000, /* Vanguard */
|
||||
XTAL_12MHz = 12000000,
|
||||
XTAL_12_096MHz = 12096000, /* Some early 80's Atari games */
|
||||
XTAL_12_288MHz = 12288000, /* Sega Model 3 digital audio board */
|
||||
XTAL_12_5MHz = 12500000, /* Red Alert audio board */
|
||||
XTAL_13_3MHz = 13300000, /* BMC bowling */
|
||||
XTAL_13_33056MHz = 13330560, /* Taito L */
|
||||
XTAL_13_4MHz = 13400000, /* TNK3, Ikari Warriors h/w */
|
||||
|
@ -240,6 +240,54 @@ static void _AYWriteReg(struct AY8910 *PSG, int r, int v)
|
||||
|
||||
|
||||
/* AY8910 interface */
|
||||
static UINT8 ay8910_r(int which, offs_t offset)
|
||||
{
|
||||
UINT8 ret;
|
||||
struct AY8910 *PSG = sndti_token(SOUND_AY8910, which);
|
||||
|
||||
if (offset & 0x01)
|
||||
ret = ay8910_read_ym(PSG);
|
||||
else
|
||||
/* return whatever the chip returns for a write
|
||||
when BC1 = 0 and BDIR = 0 */
|
||||
ret = 0x00;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
READ8_HANDLER( AY8910_0_r ) { return ay8910_r(0, offset); }
|
||||
READ8_HANDLER( AY8910_1_r ) { return ay8910_r(1, offset); }
|
||||
READ8_HANDLER( AY8910_2_r ) { return ay8910_r(2, offset); }
|
||||
READ8_HANDLER( AY8910_3_r ) { return ay8910_r(3, offset); }
|
||||
READ8_HANDLER( AY8910_4_r ) { return ay8910_r(4, offset); }
|
||||
READ16_HANDLER( AY8910_0_lsb_r ) { return ay8910_r(0, offset); }
|
||||
READ16_HANDLER( AY8910_1_lsb_r ) { return ay8910_r(1, offset); }
|
||||
READ16_HANDLER( AY8910_2_lsb_r ) { return ay8910_r(2, offset); }
|
||||
READ16_HANDLER( AY8910_3_lsb_r ) { return ay8910_r(3, offset); }
|
||||
READ16_HANDLER( AY8910_4_lsb_r ) { return ay8910_r(4, offset); }
|
||||
READ16_HANDLER( AY8910_0_msb_r ) { return ay8910_r(0, offset) << 8; }
|
||||
READ16_HANDLER( AY8910_1_msb_r ) { return ay8910_r(1, offset) << 8; }
|
||||
READ16_HANDLER( AY8910_2_msb_r ) { return ay8910_r(2, offset) << 8; }
|
||||
READ16_HANDLER( AY8910_3_msb_r ) { return ay8910_r(3, offset) << 8; }
|
||||
READ16_HANDLER( AY8910_4_msb_r ) { return ay8910_r(4, offset) << 8; }
|
||||
|
||||
READ8_HANDLER( AY8910_0_inv_a0_r ) { return ay8910_r(0, offset ^ 1); }
|
||||
READ8_HANDLER( AY8910_1_inv_a0_r ) { return ay8910_r(1, offset ^ 1); }
|
||||
READ8_HANDLER( AY8910_2_inv_a0_r ) { return ay8910_r(2, offset ^ 1); }
|
||||
READ8_HANDLER( AY8910_3_inv_a0_r ) { return ay8910_r(3, offset ^ 1); }
|
||||
READ8_HANDLER( AY8910_4_inv_a0_r ) { return ay8910_r(4, offset ^ 1); }
|
||||
READ16_HANDLER( AY8910_0_lsb_inv_a0_r ) { return ay8910_r(0, offset ^ 1); }
|
||||
READ16_HANDLER( AY8910_1_lsb_inv_a0_r ) { return ay8910_r(1, offset ^ 1); }
|
||||
READ16_HANDLER( AY8910_2_lsb_inv_a0_r ) { return ay8910_r(2, offset ^ 1); }
|
||||
READ16_HANDLER( AY8910_3_lsb_inv_a0_r ) { return ay8910_r(3, offset ^ 1); }
|
||||
READ16_HANDLER( AY8910_4_lsb_inv_a0_r ) { return ay8910_r(4, offset ^ 1); }
|
||||
READ16_HANDLER( AY8910_0_msb_inv_a0_r ) { return ay8910_r(0, offset ^ 1) << 8; }
|
||||
READ16_HANDLER( AY8910_1_msb_inv_a0_r ) { return ay8910_r(1, offset ^ 1) << 8; }
|
||||
READ16_HANDLER( AY8910_2_msb_inv_a0_r ) { return ay8910_r(2, offset ^ 1) << 8; }
|
||||
READ16_HANDLER( AY8910_3_msb_inv_a0_r ) { return ay8910_r(3, offset ^ 1) << 8; }
|
||||
READ16_HANDLER( AY8910_4_msb_inv_a0_r ) { return ay8910_r(4, offset ^ 1) << 8; }
|
||||
|
||||
READ8_HANDLER( AY8910_read_port_0_r ) { return ay8910_read_ym(sndti_token(SOUND_AY8910, 0)); }
|
||||
READ8_HANDLER( AY8910_read_port_1_r ) { return ay8910_read_ym(sndti_token(SOUND_AY8910, 1)); }
|
||||
READ8_HANDLER( AY8910_read_port_2_r ) { return ay8910_read_ym(sndti_token(SOUND_AY8910, 2)); }
|
||||
@ -256,6 +304,38 @@ READ16_HANDLER( AY8910_read_port_2_msb_r ) { return ay8910_read_ym(sndti_token(S
|
||||
READ16_HANDLER( AY8910_read_port_3_msb_r ) { return ay8910_read_ym(sndti_token(SOUND_AY8910, 3)) << 8; }
|
||||
READ16_HANDLER( AY8910_read_port_4_msb_r ) { return ay8910_read_ym(sndti_token(SOUND_AY8910, 4)) << 8; }
|
||||
|
||||
WRITE8_HANDLER( AY8910_0_w ) { ay8910_write_ym(sndti_token(SOUND_AY8910, 0), offset & 1, data); }
|
||||
WRITE8_HANDLER( AY8910_1_w ) { ay8910_write_ym(sndti_token(SOUND_AY8910, 1), offset & 1, data); }
|
||||
WRITE8_HANDLER( AY8910_2_w ) { ay8910_write_ym(sndti_token(SOUND_AY8910, 2), offset & 1, data); }
|
||||
WRITE8_HANDLER( AY8910_3_w ) { ay8910_write_ym(sndti_token(SOUND_AY8910, 3), offset & 1, data); }
|
||||
WRITE8_HANDLER( AY8910_4_w ) { ay8910_write_ym(sndti_token(SOUND_AY8910, 4), offset & 1, data); }
|
||||
WRITE16_HANDLER( AY8910_0_lsb_w ) { if (ACCESSING_LSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 0), offset & 1, data & 0xff); }
|
||||
WRITE16_HANDLER( AY8910_1_lsb_w ) { if (ACCESSING_LSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 1), offset & 1, data & 0xff); }
|
||||
WRITE16_HANDLER( AY8910_2_lsb_w ) { if (ACCESSING_LSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 2), offset & 1, data & 0xff); }
|
||||
WRITE16_HANDLER( AY8910_3_lsb_w ) { if (ACCESSING_LSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 3), offset & 1, data & 0xff); }
|
||||
WRITE16_HANDLER( AY8910_4_lsb_w ) { if (ACCESSING_LSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 4), offset & 1, data & 0xff); }
|
||||
WRITE16_HANDLER( AY8910_0_msb_w ) { if (ACCESSING_MSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 0), offset & 1, data >> 8); }
|
||||
WRITE16_HANDLER( AY8910_1_msb_w ) { if (ACCESSING_MSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 0), offset & 1, data >> 8); }
|
||||
WRITE16_HANDLER( AY8910_2_msb_w ) { if (ACCESSING_MSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 0), offset & 1, data >> 8); }
|
||||
WRITE16_HANDLER( AY8910_3_msb_w ) { if (ACCESSING_MSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 0), offset & 1, data >> 8); }
|
||||
WRITE16_HANDLER( AY8910_4_msb_w ) { if (ACCESSING_MSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 0), offset & 1, data >> 8); }
|
||||
|
||||
WRITE8_HANDLER( AY8910_0_inv_a0_w ) { ay8910_write_ym(sndti_token(SOUND_AY8910, 0), (offset & 1) ^ 1, data); }
|
||||
WRITE8_HANDLER( AY8910_1_inv_a0_w ) { ay8910_write_ym(sndti_token(SOUND_AY8910, 1), (offset & 1) ^ 1, data); }
|
||||
WRITE8_HANDLER( AY8910_2_inv_a0_w ) { ay8910_write_ym(sndti_token(SOUND_AY8910, 2), (offset & 1) ^ 1, data); }
|
||||
WRITE8_HANDLER( AY8910_3_inv_a0_w ) { ay8910_write_ym(sndti_token(SOUND_AY8910, 3), (offset & 1) ^ 1, data); }
|
||||
WRITE8_HANDLER( AY8910_4_inv_a0_w ) { ay8910_write_ym(sndti_token(SOUND_AY8910, 4), (offset & 1) ^ 1, data); }
|
||||
WRITE16_HANDLER( AY8910_0_lsb_inv_a0_w ) { if (ACCESSING_LSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 0), (offset & 1) ^ 1, data & 0xff); }
|
||||
WRITE16_HANDLER( AY8910_1_lsb_inv_a0_w ) { if (ACCESSING_LSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 1), (offset & 1) ^ 1, data & 0xff); }
|
||||
WRITE16_HANDLER( AY8910_2_lsb_inv_a0_w ) { if (ACCESSING_LSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 2), (offset & 1) ^ 1, data & 0xff); }
|
||||
WRITE16_HANDLER( AY8910_3_lsb_inv_a0_w ) { if (ACCESSING_LSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 3), (offset & 1) ^ 1, data & 0xff); }
|
||||
WRITE16_HANDLER( AY8910_4_lsb_inv_a0_w ) { if (ACCESSING_LSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 4), (offset & 1) ^ 1, data & 0xff); }
|
||||
WRITE16_HANDLER( AY8910_0_msb_inv_a0_w ) { if (ACCESSING_MSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 0), (offset & 1) ^ 1, data >> 8); }
|
||||
WRITE16_HANDLER( AY8910_1_msb_inv_a0_w ) { if (ACCESSING_MSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 0), (offset & 1) ^ 1, data >> 8); }
|
||||
WRITE16_HANDLER( AY8910_2_msb_inv_a0_w ) { if (ACCESSING_MSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 0), (offset & 1) ^ 1, data >> 8); }
|
||||
WRITE16_HANDLER( AY8910_3_msb_inv_a0_w ) { if (ACCESSING_MSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 0), (offset & 1) ^ 1, data >> 8); }
|
||||
WRITE16_HANDLER( AY8910_4_msb_inv_a0_w ) { if (ACCESSING_MSB) ay8910_write_ym(sndti_token(SOUND_AY8910, 0), (offset & 1) ^ 1, data >> 8); }
|
||||
|
||||
WRITE8_HANDLER( AY8910_control_port_0_w ) { ay8910_write_ym(sndti_token(SOUND_AY8910, 0),0,data); }
|
||||
WRITE8_HANDLER( AY8910_control_port_1_w ) { ay8910_write_ym(sndti_token(SOUND_AY8910, 1),0,data); }
|
||||
WRITE8_HANDLER( AY8910_control_port_2_w ) { ay8910_write_ym(sndti_token(SOUND_AY8910, 2),0,data); }
|
||||
|
@ -27,6 +27,38 @@ struct AY8910interface
|
||||
void AY8910_set_volume(int chip,int channel,int volume);
|
||||
|
||||
|
||||
READ8_HANDLER( AY8910_0_r );
|
||||
READ8_HANDLER( AY8910_1_r );
|
||||
READ8_HANDLER( AY8910_2_r );
|
||||
READ8_HANDLER( AY8910_3_r );
|
||||
READ8_HANDLER( AY8910_4_r );
|
||||
READ16_HANDLER( AY8910_0_lsb_r );
|
||||
READ16_HANDLER( AY8910_1_lsb_r );
|
||||
READ16_HANDLER( AY8910_2_lsb_r );
|
||||
READ16_HANDLER( AY8910_3_lsb_r );
|
||||
READ16_HANDLER( AY8910_4_lsb_r );
|
||||
READ16_HANDLER( AY8910_0_msb_r );
|
||||
READ16_HANDLER( AY8910_1_msb_r );
|
||||
READ16_HANDLER( AY8910_2_msb_r );
|
||||
READ16_HANDLER( AY8910_3_msb_r );
|
||||
READ16_HANDLER( AY8910_4_msb_r );
|
||||
|
||||
READ8_HANDLER( AY8910_0_inv_a0_r );
|
||||
READ8_HANDLER( AY8910_1_inv_a0_r );
|
||||
READ8_HANDLER( AY8910_2_inv_a0_r );
|
||||
READ8_HANDLER( AY8910_3_inv_a0_r );
|
||||
READ8_HANDLER( AY8910_4_inv_a0_r );
|
||||
READ16_HANDLER( AY8910_0_lsb_inv_a0_r );
|
||||
READ16_HANDLER( AY8910_1_lsb_inv_a0_r );
|
||||
READ16_HANDLER( AY8910_2_lsb_inv_a0_r );
|
||||
READ16_HANDLER( AY8910_3_lsb_inv_a0_r );
|
||||
READ16_HANDLER( AY8910_4_lsb_inv_a0_r );
|
||||
READ16_HANDLER( AY8910_0_msb_inv_a0_r );
|
||||
READ16_HANDLER( AY8910_1_msb_inv_a0_r );
|
||||
READ16_HANDLER( AY8910_2_msb_inv_a0_r );
|
||||
READ16_HANDLER( AY8910_3_msb_inv_a0_r );
|
||||
READ16_HANDLER( AY8910_4_msb_inv_a0_r );
|
||||
|
||||
READ8_HANDLER( AY8910_read_port_0_r );
|
||||
READ8_HANDLER( AY8910_read_port_1_r );
|
||||
READ8_HANDLER( AY8910_read_port_2_r );
|
||||
@ -43,6 +75,38 @@ READ16_HANDLER( AY8910_read_port_2_msb_r );
|
||||
READ16_HANDLER( AY8910_read_port_3_msb_r );
|
||||
READ16_HANDLER( AY8910_read_port_4_msb_r );
|
||||
|
||||
WRITE8_HANDLER( AY8910_0_w );
|
||||
WRITE8_HANDLER( AY8910_1_w );
|
||||
WRITE8_HANDLER( AY8910_2_w );
|
||||
WRITE8_HANDLER( AY8910_3_w );
|
||||
WRITE8_HANDLER( AY8910_4_w );
|
||||
WRITE16_HANDLER( AY8910_0_lsb_w );
|
||||
WRITE16_HANDLER( AY8910_1_lsb_w );
|
||||
WRITE16_HANDLER( AY8910_2_lsb_w );
|
||||
WRITE16_HANDLER( AY8910_3_lsb_w );
|
||||
WRITE16_HANDLER( AY8910_4_lsb_w );
|
||||
WRITE16_HANDLER( AY8910_0_msb_w );
|
||||
WRITE16_HANDLER( AY8910_1_msb_w );
|
||||
WRITE16_HANDLER( AY8910_2_msb_w );
|
||||
WRITE16_HANDLER( AY8910_3_msb_w );
|
||||
WRITE16_HANDLER( AY8910_4_msb_w );
|
||||
|
||||
WRITE8_HANDLER( AY8910_0_inv_a0_w );
|
||||
WRITE8_HANDLER( AY8910_1_inv_a0_w );
|
||||
WRITE8_HANDLER( AY8910_2_inv_a0_w );
|
||||
WRITE8_HANDLER( AY8910_3_inv_a0_w );
|
||||
WRITE8_HANDLER( AY8910_4_inv_a0_w );
|
||||
WRITE16_HANDLER( AY8910_0_lsb_inv_a0_w );
|
||||
WRITE16_HANDLER( AY8910_1_lsb_inv_a0_w );
|
||||
WRITE16_HANDLER( AY8910_2_lsb_inv_a0_w );
|
||||
WRITE16_HANDLER( AY8910_3_lsb_inv_a0_w );
|
||||
WRITE16_HANDLER( AY8910_4_lsb_inv_a0_w );
|
||||
WRITE16_HANDLER( AY8910_0_msb_inv_a0_w );
|
||||
WRITE16_HANDLER( AY8910_1_msb_inv_a0_w );
|
||||
WRITE16_HANDLER( AY8910_2_msb_inv_a0_w );
|
||||
WRITE16_HANDLER( AY8910_3_msb_inv_a0_w );
|
||||
WRITE16_HANDLER( AY8910_4_msb_inv_a0_w );
|
||||
|
||||
WRITE8_HANDLER( AY8910_control_port_0_w );
|
||||
WRITE8_HANDLER( AY8910_control_port_1_w );
|
||||
WRITE8_HANDLER( AY8910_control_port_2_w );
|
||||
@ -75,6 +139,7 @@ WRITE16_HANDLER( AY8910_write_port_2_msb_w );
|
||||
WRITE16_HANDLER( AY8910_write_port_3_msb_w );
|
||||
WRITE16_HANDLER( AY8910_write_port_4_msb_w );
|
||||
|
||||
|
||||
/*********** An interface for SSG of YM2203 ***********/
|
||||
|
||||
void *ay8910_start_ym(sound_type chip_type, int sndindex, int clock, int streams,
|
||||
|
@ -73,12 +73,12 @@
|
||||
|
||||
|
||||
|
||||
#define MAIN_CPU_MASTER_CLOCK (11200000)
|
||||
#define MAIN_CPU_MASTER_CLOCK (XTAL_11_2MHz)
|
||||
#define PIXEL_CLOCK (MAIN_CPU_MASTER_CLOCK / 2)
|
||||
#define CRTC_CLOCK (MAIN_CPU_MASTER_CLOCK / 16)
|
||||
#define AUDIO_1_MASTER_CLOCK (4000000)
|
||||
#define AUDIO_1_MASTER_CLOCK (XTAL_4MHz)
|
||||
#define AUDIO_CPU_1_CLOCK (AUDIO_1_MASTER_CLOCK)
|
||||
#define AUDIO_2_MASTER_CLOCK (4000000)
|
||||
#define AUDIO_2_MASTER_CLOCK (XTAL_4MHz)
|
||||
#define AUDIO_CPU_2_CLOCK (AUDIO_2_MASTER_CLOCK)
|
||||
|
||||
|
||||
@ -537,10 +537,8 @@ static ADDRESS_MAP_START( nyny_audio_1_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0080, 0x0fff) AM_NOP
|
||||
AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x0fff) AM_READWRITE(soundlatch_r, audio_1_answer_w)
|
||||
AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0fff) AM_READ(input_port_4_r)
|
||||
AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x0ffc) AM_READWRITE(AY8910_read_port_0_r, AY8910_write_port_0_w)
|
||||
AM_RANGE(0x3001, 0x3001) AM_MIRROR(0x0ffc) AM_WRITE(AY8910_control_port_0_w)
|
||||
AM_RANGE(0x3002, 0x3002) AM_MIRROR(0x0ffc) AM_READWRITE(AY8910_read_port_1_r, AY8910_write_port_1_w)
|
||||
AM_RANGE(0x3003, 0x3003) AM_MIRROR(0x0ffc) AM_WRITE(AY8910_control_port_1_w)
|
||||
AM_RANGE(0x3000, 0x3001) AM_MIRROR(0x0ffc) AM_READWRITE(AY8910_0_inv_a0_r, AY8910_0_inv_a0_w)
|
||||
AM_RANGE(0x3002, 0x3003) AM_MIRROR(0x0ffc) AM_READWRITE(AY8910_1_inv_a0_r, AY8910_1_inv_a0_w)
|
||||
AM_RANGE(0x4000, 0x4fff) AM_NOP
|
||||
AM_RANGE(0x5000, 0x57ff) AM_MIRROR(0x0800) AM_ROM
|
||||
AM_RANGE(0x6000, 0x67ff) AM_MIRROR(0x0800) AM_ROM
|
||||
@ -553,8 +551,7 @@ static ADDRESS_MAP_START( nyny_audio_2_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */
|
||||
AM_RANGE(0x0080, 0x0fff) AM_NOP
|
||||
AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x0fff) AM_READ(soundlatch2_r)
|
||||
AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0ffe) AM_READWRITE(AY8910_read_port_2_r, AY8910_write_port_2_w)
|
||||
AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x0ffe) AM_WRITE(AY8910_control_port_2_w)
|
||||
AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x0ffe) AM_READWRITE(AY8910_2_inv_a0_r, AY8910_2_inv_a0_w)
|
||||
AM_RANGE(0x3000, 0x6fff) AM_NOP
|
||||
AM_RANGE(0x7000, 0x77ff) AM_MIRROR(0x0800) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
@ -199,23 +199,15 @@ static ADDRESS_MAP_START( thief_writemem, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0xe0c0, 0xe0c0) AM_WRITE(thief_context_bank_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( readport, ADDRESS_SPACE_IO, 8 )
|
||||
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
|
||||
AM_RANGE(0x31, 0x31) AM_READ(thief_io_r) // 8255
|
||||
AM_RANGE(0x41, 0x41) AM_READ(AY8910_read_port_0_r)
|
||||
AM_RANGE(0x43, 0x43) AM_READ(AY8910_read_port_1_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( writeport, ADDRESS_SPACE_IO, 8 )
|
||||
static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
|
||||
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
|
||||
AM_RANGE(0x00, 0x00) AM_WRITE(MWA8_NOP) /* watchdog */
|
||||
AM_RANGE(0x10, 0x10) AM_WRITE(thief_video_control_w)
|
||||
AM_RANGE(0x30, 0x30) AM_WRITE(thief_input_select_w) // 8255
|
||||
AM_RANGE(0x31, 0x31) AM_READ(thief_io_r) // 8255
|
||||
AM_RANGE(0x33, 0x33) AM_WRITE(tape_control_w)
|
||||
AM_RANGE(0x40, 0x40) AM_WRITE(AY8910_control_port_0_w)
|
||||
AM_RANGE(0x41, 0x41) AM_WRITE(AY8910_write_port_0_w)
|
||||
AM_RANGE(0x42, 0x42) AM_WRITE(AY8910_control_port_1_w)
|
||||
AM_RANGE(0x43, 0x43) AM_WRITE(AY8910_write_port_1_w)
|
||||
AM_RANGE(0x40, 0x41) AM_READWRITE(AY8910_0_r, AY8910_0_w)
|
||||
AM_RANGE(0x42, 0x43) AM_READWRITE(AY8910_1_r, AY8910_1_w)
|
||||
AM_RANGE(0x50, 0x50) AM_WRITE(thief_color_plane_w)
|
||||
AM_RANGE(0x60, 0x6f) AM_WRITE(thief_vtcsel_w)
|
||||
AM_RANGE(0x70, 0x7f) AM_WRITE(thief_color_map_w)
|
||||
@ -470,7 +462,7 @@ static MACHINE_DRIVER_START( sharkatt )
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD(Z80, 4000000) /* 4 MHz? */
|
||||
MDRV_CPU_PROGRAM_MAP(sharkatt_readmem,sharkatt_writemem)
|
||||
MDRV_CPU_IO_MAP(readport,writeport)
|
||||
MDRV_CPU_IO_MAP(io_map,0)
|
||||
MDRV_CPU_VBLANK_INT(thief_interrupt,1)
|
||||
|
||||
MDRV_SCREEN_REFRESH_RATE(60)
|
||||
@ -506,7 +498,7 @@ static MACHINE_DRIVER_START( thief )
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD(Z80, 4000000) /* 4 MHz? */
|
||||
MDRV_CPU_PROGRAM_MAP(thief_readmem,thief_writemem)
|
||||
MDRV_CPU_IO_MAP(readport,writeport)
|
||||
MDRV_CPU_IO_MAP(io_map,0)
|
||||
MDRV_CPU_VBLANK_INT(thief_interrupt,1)
|
||||
|
||||
MDRV_SCREEN_REFRESH_RATE(60)
|
||||
@ -542,7 +534,7 @@ static MACHINE_DRIVER_START( natodef )
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD(Z80, 4000000) /* 4 MHz? */
|
||||
MDRV_CPU_PROGRAM_MAP(thief_readmem,thief_writemem)
|
||||
MDRV_CPU_IO_MAP(readport,writeport)
|
||||
MDRV_CPU_IO_MAP(io_map,0)
|
||||
MDRV_CPU_VBLANK_INT(thief_interrupt,1)
|
||||
|
||||
MDRV_SCREEN_REFRESH_RATE(60)
|
||||
|
Loading…
Reference in New Issue
Block a user