diff --git a/src/mame/drivers/bfm_sc2.c b/src/mame/drivers/bfm_sc2.c index 7cc918167d0..e152d6a737f 100644 --- a/src/mame/drivers/bfm_sc2.c +++ b/src/mame/drivers/bfm_sc2.c @@ -5343,7 +5343,7 @@ ROM_START( sc2cpe3 ) ROM_LOAD( "club-public-enemy-no1_std_ac_200pnd_ass.bin", 0x0000, 0x010000, CRC(5704e52d) SHA1(dfae48734794cea2e9a952d808dedb96fd5204b3) ) ROM_REGION( 0x20000, "matrix", 0 ) - ROM_LOAD( "matrix.bin", 0x0000, 0x010000, CRC(64014f73) SHA1(67d44db91944738fcadc38bfd0d2b7c0536adb9a) ) + ROM_LOAD( "matrix.bin", 0x0000, 0x010000, CRC(64014f73) SHA1(67d44db91944738fcadc38bfd0d2b7c0536adb9a) ) // seems to be from a cops+robbers instead, will say 'wrong display prom' during attract cycle sc2_cpe_sound_alt2 ROM_END @@ -5353,7 +5353,7 @@ ROM_START( sc2cpe3p ) ROM_LOAD( "club-public-enemy-no1_dat_ac_200pnd_ass.bin", 0x0000, 0x010000, CRC(fec925a3) SHA1(5ce3b6f1236f511ae8975c7ecd1549e8d427a245) ) ROM_REGION( 0x20000, "matrix", 0 ) - ROM_LOAD( "matrix.bin", 0x0000, 0x010000, CRC(64014f73) SHA1(67d44db91944738fcadc38bfd0d2b7c0536adb9a) ) + ROM_LOAD( "matrix.bin", 0x0000, 0x010000, CRC(64014f73) SHA1(67d44db91944738fcadc38bfd0d2b7c0536adb9a) ) // see above comment sc2_cpe_sound_alt2 ROM_END @@ -5363,7 +5363,7 @@ ROM_START( sc2cpe4 ) ROM_LOAD( "95750273.p1", 0x0000, 0x010000, CRC(950da13c) SHA1(2c544e06112969f7914a5b4fd15e6b0dfedf6b0b) ) ROM_REGION( 0x20000, "matrix", 0 ) - ROM_LOAD( "matrix.bin", 0x0000, 0x010000, CRC(64014f73) SHA1(67d44db91944738fcadc38bfd0d2b7c0536adb9a) ) + ROM_LOAD( "matrix.bin", 0x0000, 0x010000, CRC(64014f73) SHA1(67d44db91944738fcadc38bfd0d2b7c0536adb9a) ) // see above comment sc2_cpe_sound_alt2 ROM_END @@ -5373,7 +5373,7 @@ ROM_START( sc2cpe4p ) ROM_LOAD( "club-public-enemy-no1_dat_fe_ac_200pnd_p65_rot_ass.bin", 0x0000, 0x010000, CRC(8d5ff953) SHA1(bdf6b5e014c46f6abac792a5913e98cb897b2a73) ) ROM_REGION( 0x20000, "matrix", 0 ) - ROM_LOAD( "matrix.bin", 0x0000, 0x010000, CRC(64014f73) SHA1(67d44db91944738fcadc38bfd0d2b7c0536adb9a) ) + ROM_LOAD( "matrix.bin", 0x0000, 0x010000, CRC(64014f73) SHA1(67d44db91944738fcadc38bfd0d2b7c0536adb9a) ) // see above comment sc2_cpe_sound_alt2 ROM_END diff --git a/src/mess/drivers/supracan.c b/src/mess/drivers/supracan.c index 8c8dbf619b2..4332c078595 100644 --- a/src/mess/drivers/supracan.c +++ b/src/mess/drivers/supracan.c @@ -128,6 +128,11 @@ public: DECLARE_WRITE16_MEMBER(supracan_68k_soundram_w); DECLARE_READ8_MEMBER(supracan_6502_soundmem_r); DECLARE_WRITE8_MEMBER(supracan_6502_soundmem_w); + + void supracan_dma_w(address_space &space, int offset, UINT16 data, UINT16 mem_mask, int ch); + WRITE16_MEMBER( supracan_dma_channel0_w ); + WRITE16_MEMBER( supracan_dma_channel1_w ); + DECLARE_WRITE16_MEMBER(supracan_dma_w); DECLARE_READ16_MEMBER(supracan_sound_r); DECLARE_WRITE16_MEMBER(supracan_sound_w); @@ -984,45 +989,38 @@ UINT32 supracan_state::screen_update_supracan(screen_device &screen, bitmap_ind1 } -WRITE16_MEMBER( supracan_state::supracan_dma_w ) +void supracan_state::supracan_dma_w(address_space &space, int offset, UINT16 data, UINT16 mem_mask, int ch) { acan_dma_regs_t *acan_dma_regs = &m_acan_dma_regs; - int ch = (offset < 0x10/2) ? 0 : 1; address_space &mem = m_maincpu->space(AS_PROGRAM); switch(offset) { case 0x00/2: // Source address MSW - case 0x10/2: verboselog("maincpu", 0, "supracan_dma_w: source msw %d: %04x\n", ch, data); acan_dma_regs->source[ch] &= 0x0000ffff; acan_dma_regs->source[ch] |= data << 16; break; case 0x02/2: // Source address LSW - case 0x12/2: verboselog("maincpu", 0, "supracan_dma_w: source lsw %d: %04x\n", ch, data); acan_dma_regs->source[ch] &= 0xffff0000; acan_dma_regs->source[ch] |= data; break; case 0x04/2: // Destination address MSW - case 0x14/2: verboselog("maincpu", 0, "supracan_dma_w: dest msw %d: %04x\n", ch, data); acan_dma_regs->dest[ch] &= 0x0000ffff; acan_dma_regs->dest[ch] |= data << 16; break; case 0x06/2: // Destination address LSW - case 0x16/2: verboselog("maincpu", 0, "supracan_dma_w: dest lsw %d: %04x\n", ch, data); acan_dma_regs->dest[ch] &= 0xffff0000; acan_dma_regs->dest[ch] |= data; break; case 0x08/2: // Byte count - case 0x18/2: verboselog("maincpu", 0, "supracan_dma_w: count %d: %04x\n", ch, data); acan_dma_regs->count[ch] = data; break; case 0x0a/2: // Control - case 0x1a/2: verboselog("maincpu", 0, "supracan_dma_w: control %d: %04x\n", ch, data); if(data & 0x8800) { @@ -1061,6 +1059,17 @@ WRITE16_MEMBER( supracan_state::supracan_dma_w ) } } +WRITE16_MEMBER( supracan_state::supracan_dma_channel0_w ) +{ + supracan_dma_w(space,offset,data,mem_mask,0); +} + +WRITE16_MEMBER( supracan_state::supracan_dma_channel1_w ) +{ + supracan_dma_w(space,offset,data,mem_mask,1); +} + + #if 0 WRITE16_MEMBER( supracan_state::supracan_pram_w ) { @@ -1114,7 +1123,9 @@ static ADDRESS_MAP_START( supracan_mem, AS_PROGRAM, 16, supracan_state ) AM_RANGE( 0xe8020c, 0xe8020d ) AM_READ_PORT("P4") AM_RANGE( 0xe80000, 0xe8ffff ) AM_READWRITE( supracan_68k_soundram_r, supracan_68k_soundram_w ) AM_RANGE( 0xe90000, 0xe9001f ) AM_READWRITE( supracan_sound_r, supracan_sound_w ) - AM_RANGE( 0xe90020, 0xe9003f ) AM_WRITE( supracan_dma_w ) + AM_RANGE( 0xe90020, 0xe9002f ) AM_WRITE( supracan_dma_channel0_w ) + AM_RANGE( 0xe90030, 0xe9003f ) AM_WRITE( supracan_dma_channel1_w ) + AM_RANGE( 0xf00000, 0xf001ff ) AM_READWRITE( supracan_video_r, supracan_video_w ) AM_RANGE( 0xf00200, 0xf003ff ) AM_RAM AM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram") AM_RANGE( 0xf40000, 0xf5ffff ) AM_READWRITE(supracan_vram_r, supracan_vram_w) @@ -1552,6 +1563,9 @@ WRITE16_MEMBER( supracan_state::supracan_video_w ) // if any of this changes we need a partial update (see sango fighters intro) machine().primary_screen->update_partial(machine().primary_screen->vpos()); + COMBINE_DATA(&m_video_regs[offset]); + data = m_video_regs[offset]; + switch(offset) { case 0x10/2: // Byte count @@ -1724,7 +1738,7 @@ WRITE16_MEMBER( supracan_state::supracan_video_w ) verboselog("maincpu", 0, "supracan_video_w: Unknown register: %08x = %04x & %04x\n", 0xf00000 + (offset << 1), data, mem_mask); break; } - m_video_regs[offset] = data; +// m_video_regs[offset] = data; }