diff --git a/src/emu/sound/aica.c b/src/emu/sound/aica.c index d68bc828efc..d6f679f6441 100644 --- a/src/emu/sound/aica.c +++ b/src/emu/sound/aica.c @@ -731,6 +731,12 @@ static void AICA_UpdateReg(aica_state *AICA, address_space &space, int reg) case 0x9: aica_midi_in(AICA->device, space, 0, AICA->udata.data[0x8/2]&0xff, 0xffff); break; + + //case 0x0c: + //case 0x0d: + // printf("%04x\n",AICA->udata.data[0xc/2]); + // break; + case 0x12: case 0x13: case 0x14: @@ -945,6 +951,7 @@ static void AICA_UpdateRegR(aica_state *AICA, address_space &space, int reg) case 0x14: // CA (slot address) case 0x15: { + //AICA->stream->update(); int slotnum = MSLC(AICA); SLOT *slot=AICA->Slots+slotnum; unsigned int CA = 0; @@ -958,6 +965,8 @@ static void AICA_UpdateRegR(aica_state *AICA, address_space &space, int reg) CA = (slot->cur_addr>>SHIFT)&AICA->RAM_MASK; } + //printf("%08x %08x\n",CA,slot->cur_addr&AICA->RAM_MASK16); + AICA->udata.data[0x14/2] = CA; } break; diff --git a/src/mame/includes/dc.h b/src/mame/includes/dc.h index 4793d579fd1..df07d828911 100644 --- a/src/mame/includes/dc.h +++ b/src/mame/includes/dc.h @@ -36,6 +36,7 @@ class dc_state : public driver_device UINT32 dc_sysctrl_regs[0x200/4]; UINT32 g1bus_regs[0x100/4]; // DC-only UINT32 g2bus_regs[0x100/4]; + UINT8 m_armrst; struct { UINT32 aica_addr; diff --git a/src/mame/machine/dc.c b/src/mame/machine/dc.c index 209a2a2ff9a..7314eaf7ff4 100644 --- a/src/mame/machine/dc.c +++ b/src/mame/machine/dc.c @@ -666,6 +666,7 @@ void dc_state::machine_start() void dc_state::machine_reset() { /* halt the ARM7 */ + m_armrst = 1; m_soundcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); memset(dc_sysctrl_regs, 0, sizeof(dc_sysctrl_regs)); @@ -677,6 +678,9 @@ READ32_MEMBER(dc_state::dc_aica_reg_r) { // mame_printf_verbose("AICA REG: [%08x] read %" I64FMT "x, mask %" I64FMT "x\n", 0x700000+reg*4, (UINT64)offset, mem_mask); + if(offset == 0x2c00/4) + return m_armrst; + return aica_r(machine().device("aica"), space, offset*2, 0xffff); } @@ -684,15 +688,20 @@ WRITE32_MEMBER(dc_state::dc_aica_reg_w) { if (offset == (0x2c00/4)) { - if (data & 1) + if(ACCESSING_BITS_0_7) { - /* halt the ARM7 */ - m_soundcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); - } - else - { - /* it's alive ! */ - m_soundcpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE); + m_armrst = data & 1; + + if (data & 1) + { + /* halt the ARM7 */ + m_soundcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); + } + else + { + /* it's alive ! */ + m_soundcpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE); + } } } diff --git a/src/mess/drivers/dccons.c b/src/mess/drivers/dccons.c index f1dc86a4a03..f20289c414a 100644 --- a/src/mess/drivers/dccons.c +++ b/src/mess/drivers/dccons.c @@ -157,9 +157,9 @@ ok S_Clock (03xx) 50MSEC (0301) - NG + NG -> ~0xa58 in 0x702814, must be > 0x889 and < 0x8b0 25MSEC (0302) - NG + NG -> ~0x372 in 0x702814, must be > 0x443 and < 0x45a Timer (04xx) Timer A (0401) NG