diff --git a/src/emu/sound/tms5220.c b/src/emu/sound/tms5220.c index e0a4584eb79..15253e7b2a1 100644 --- a/src/emu/sound/tms5220.c +++ b/src/emu/sound/tms5220.c @@ -1088,16 +1088,16 @@ INT32 tms5220_device::lattice_filter() bn = m_x[n-1] */ /* - int ep = matrix_multiply(m_previous_energy, (m_excitation_data<<6)); //Y(11) - m_u[10] = ep; - for (int i = 0; i < 10; i++) - { - int ii = 10-i; // for m = 10, this would be 11 - i, and since i is from 1 to 10, then ii ranges from 10 to 1 - //int jj = ii+1; // this variable, even on the fortran version, is never used. it probably was intended to be used on the two lines below the next one to save some redundant additions on each. - ep = ep - (((m_current_k[ii-1] * m_x[ii-1])>>9)|1); // subtract reflection from lower stage 'top of lattice' - m_u[ii-1] = ep; - m_x[ii] = m_x[ii-1] + (((m_current_k[ii-1] * ep)>>9)|1); // add reflection from upper stage 'bottom of lattice' - } + int ep = matrix_multiply(m_previous_energy, (m_excitation_data<<6)); //Y(11) + m_u[10] = ep; + for (int i = 0; i < 10; i++) + { + int ii = 10-i; // for m = 10, this would be 11 - i, and since i is from 1 to 10, then ii ranges from 10 to 1 + //int jj = ii+1; // this variable, even on the fortran version, is never used. it probably was intended to be used on the two lines below the next one to save some redundant additions on each. + ep = ep - (((m_current_k[ii-1] * m_x[ii-1])>>9)|1); // subtract reflection from lower stage 'top of lattice' + m_u[ii-1] = ep; + m_x[ii] = m_x[ii-1] + (((m_current_k[ii-1] * ep)>>9)|1); // add reflection from upper stage 'bottom of lattice' + } m_x[0] = ep; // feed the last section of the top of the lattice directly to the bottom of the lattice */ m_u[10] = matrix_multiply(m_previous_energy, (m_excitation_data<<6)); //Y(11) @@ -1673,6 +1673,9 @@ WRITE_LINE_MEMBER( tms5220_device::wsq_w ) WRITE8_MEMBER( tms5220_device::data_w ) { + // prevent debugger from changing the internal state + if (space.debugger_access()) return; + #ifdef DEBUG_RS_WS logerror("tms5220_data_w: data %02x\n", data); #endif @@ -1703,6 +1706,9 @@ WRITE8_MEMBER( tms5220_device::data_w ) READ8_MEMBER( tms5220_device::status_r ) { + // prevent debugger from changing the internal state + if (space.debugger_access()) return 0; + if (!m_true_timing) { /* bring up to date first */ diff --git a/src/emu/video/tms9928a.c b/src/emu/video/tms9928a.c index e924b0fb55c..99f05b9cb5e 100644 --- a/src/emu/video/tms9928a.c +++ b/src/emu/video/tms9928a.c @@ -116,6 +116,9 @@ tms9928a_device::tms9928a_device( const machine_config &mconfig, const char *tag READ8_MEMBER( tms9928a_device::vram_read ) { + // prevent debugger from changing the address base + if (space.debugger_access()) return 0; + UINT8 data = m_ReadAhead; m_ReadAhead = m_vram_space->read_byte(m_Addr); @@ -128,6 +131,9 @@ READ8_MEMBER( tms9928a_device::vram_read ) WRITE8_MEMBER( tms9928a_device::vram_write ) { + // prevent debugger from changing the address base + if (space.debugger_access()) return; + m_vram_space->write_byte(m_Addr, data); m_Addr = (m_Addr + 1) & (m_vram_size - 1); m_ReadAhead = data; @@ -137,6 +143,9 @@ WRITE8_MEMBER( tms9928a_device::vram_write ) READ8_MEMBER( tms9928a_device::register_read ) { + // prevent debugger from changing the internal state + if (space.debugger_access()) return 0; + UINT8 data = m_StatusReg; m_StatusReg = m_FifthSprite; @@ -262,6 +271,9 @@ void tms9928a_device::change_register(UINT8 reg, UINT8 val) WRITE8_MEMBER( tms9928a_device::register_write ) { + // prevent debugger from changing the internal state + if (space.debugger_access()) return; + if (m_latch) { /* set high part of read/write address */