summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2025-02-25 01:09:29 +0100
committer hap <happppp@users.noreply.github.com>2025-02-25 01:09:29 +0100
commite7ba53a4614416620962d8d7fc948d1ac7fc2967 (patch)
tree9be66b23702d26cb5528261bce755899e77af573
parentc2155411874230f424f3636e477a9cfeeebb23cb (diff)
leland: add debugger side effect check when reading vram, no need for m_last_scanline variable
-rw-r--r--src/mame/cinematronics/leland.cpp2
-rw-r--r--src/mame/cinematronics/leland.h3
-rw-r--r--src/mame/cinematronics/leland_a.cpp2
-rw-r--r--src/mame/cinematronics/leland_a.h4
-rw-r--r--src/mame/cinematronics/leland_m.cpp18
-rw-r--r--src/mame/cinematronics/leland_v.cpp29
6 files changed, 31 insertions, 27 deletions
diff --git a/src/mame/cinematronics/leland.cpp b/src/mame/cinematronics/leland.cpp
index f0cacf93840..9dcc1b8e6e0 100644
--- a/src/mame/cinematronics/leland.cpp
+++ b/src/mame/cinematronics/leland.cpp
@@ -2,7 +2,7 @@
// copyright-holders:Aaron Giles,Paul Leaman
/***************************************************************************
- Cinematronics/Leland driver
+ Cinematronics / Leland Cinemat System driver
driver by Aaron Giles and Paul Leaman
Games supported:
diff --git a/src/mame/cinematronics/leland.h b/src/mame/cinematronics/leland.h
index 7ac22c79d1c..5a65a19f453 100644
--- a/src/mame/cinematronics/leland.h
+++ b/src/mame/cinematronics/leland.h
@@ -2,7 +2,7 @@
// copyright-holders:Aaron Giles
/*************************************************************************
- Cinemat/Leland driver
+ Cinematronics / Leland Cinemat System driver
*************************************************************************/
#ifndef MAME_CINEMATRONICS_LELAND_H
@@ -164,7 +164,6 @@ private:
u8 m_sound_port_bank = 0U;
u8 m_alternate_bank = 0U;
u8 m_gfxbank = 0U;
- u16 m_last_scanline = 0U;
emu_timer *m_scanline_timer = nullptr;
u8 cerberus_dial_1_r();
diff --git a/src/mame/cinematronics/leland_a.cpp b/src/mame/cinematronics/leland_a.cpp
index 3fcbfab7302..e574747934e 100644
--- a/src/mame/cinematronics/leland_a.cpp
+++ b/src/mame/cinematronics/leland_a.cpp
@@ -2,7 +2,7 @@
// copyright-holders:Aaron Giles,Paul Leaman
/***************************************************************************
- Cinemat/Leland driver
+ Cinematronics / Leland Cinemat System driver
Leland sound hardware
driver by Aaron Giles and Paul Leaman
diff --git a/src/mame/cinematronics/leland_a.h b/src/mame/cinematronics/leland_a.h
index a1653536b0f..86387886a72 100644
--- a/src/mame/cinematronics/leland_a.h
+++ b/src/mame/cinematronics/leland_a.h
@@ -2,7 +2,9 @@
// copyright-holders:Aaron Giles
/*************************************************************************
- Cinemat/Leland driver
+ Cinematronics / Leland Cinemat System driver
+
+ Leland sound hardware
*************************************************************************/
#ifndef MAME_CINEMATRONICS_LELAND_A_H
diff --git a/src/mame/cinematronics/leland_m.cpp b/src/mame/cinematronics/leland_m.cpp
index 89a13031290..bd64cd6814f 100644
--- a/src/mame/cinematronics/leland_m.cpp
+++ b/src/mame/cinematronics/leland_m.cpp
@@ -2,9 +2,9 @@
// copyright-holders:Aaron Giles, Paul Leaman
/***************************************************************************
- Cinemat/Leland driver
+ Cinematronics / Leland Cinemat System driver
- driver by Aaron Giles and Paul Leaman
+ Leland machine hardware
***************************************************************************/
@@ -413,7 +413,7 @@ void ataxx_state::machine_reset()
TIMER_CALLBACK_MEMBER(leland_state::leland_interrupt_callback)
{
- int scanline = param;
+ u8 scanline = param;
/* interrupts generated on the VA10 line, which is every */
/* 16 scanlines starting with scanline #8 */
@@ -421,15 +421,13 @@ TIMER_CALLBACK_MEMBER(leland_state::leland_interrupt_callback)
/* set a timer for the next one */
scanline += 16;
- if (scanline > 248)
- scanline = 8;
m_master_int_timer->adjust(m_screen->time_until_pos(scanline), scanline);
}
TIMER_CALLBACK_MEMBER(leland_state::ataxx_interrupt_callback)
{
- int scanline = param;
+ u8 scanline = param;
/* interrupts generated according to the interrupt control register */
m_master->set_input_line(0, HOLD_LINE);
@@ -1206,8 +1204,11 @@ void ataxx_state::ataxx_master_output_w(offs_t offset, u8 data)
break;
case 0x08: /* */
- m_master_int_timer->adjust(m_screen->time_until_pos(data + 1), data + 1);
+ {
+ u8 scanline = data + 1;
+ m_master_int_timer->adjust(m_screen->time_until_pos(scanline), scanline);
break;
+ }
default:
LOGMASKED(LOG_WARN, "Master I/O write offset %02X=%02X\n", offset, data);
@@ -1408,9 +1409,8 @@ void leland_state::rotate_memory(const char *cpuname)
int banks = (memregion(cpuname)->bytes() - startaddr) / 0x8000;
u8 *ram = memregion(cpuname)->base();
u8 temp[0x2000];
- int i;
- for (i = 0; i < banks; i++)
+ for (int i = 0; i < banks; i++)
{
memmove(temp, &ram[startaddr + 0x0000], 0x2000);
memmove(&ram[startaddr + 0x0000], &ram[startaddr + 0x2000], 0x6000);
diff --git a/src/mame/cinematronics/leland_v.cpp b/src/mame/cinematronics/leland_v.cpp
index 13318af892d..f25870e864b 100644
--- a/src/mame/cinematronics/leland_v.cpp
+++ b/src/mame/cinematronics/leland_v.cpp
@@ -2,7 +2,7 @@
// copyright-holders:Aaron Giles
/***************************************************************************
- Cinemat/Leland driver
+ Cinematronics / Leland Cinemat System driver
Leland video hardware
@@ -33,18 +33,17 @@ static constexpr int QRAM_SIZE = 0x10000;
TIMER_CALLBACK_MEMBER(leland_state::scanline_callback)
{
- int scanline = param;
+ u8 scanline = param;
+ u8 last_scanline = scanline - 1;
/* update the DACs */
if (!(m_dac_control & 0x01))
- m_dac[0]->write(m_video_ram[(m_last_scanline) * 256 + 160]);
+ m_dac[0]->write(m_video_ram[last_scanline << 8 | 0xa0]);
if (!(m_dac_control & 0x02))
- m_dac[1]->write(m_video_ram[(m_last_scanline) * 256 + 161]);
+ m_dac[1]->write(m_video_ram[last_scanline << 8 | 0xa1]);
- m_last_scanline = scanline;
-
- scanline = (scanline+1) % 256;
+ scanline++;
/* come back at the next appropriate scanline */
m_scanline_timer->adjust(m_screen->time_until_pos(scanline), scanline);
@@ -114,7 +113,6 @@ void leland_state::video_start()
save_item(NAME(m_xscroll));
save_item(NAME(m_yscroll));
save_item(NAME(m_gfxbank));
- save_item(NAME(m_last_scanline));
for (u8 i = 0; i < 2; i++)
{
save_item(NAME(m_vram_state[i].m_addr), i);
@@ -242,15 +240,20 @@ int leland_state::vram_port_r(offs_t offset, int num)
break;
default:
- LOGMASKED(LOG_WARN, "%s: Warning: Unknown video port %02x read (address=%04x)\n",
- machine().describe_context(), offset, addr);
+ if (!machine().side_effects_disabled())
+ LOGMASKED(LOG_WARN, "%s: Warning: Unknown video port %02x read (address=%04x)\n",
+ machine().describe_context(), offset, addr);
ret = 0;
break;
}
- state->m_addr = addr;
- if (addr >= 0xf000)
- LOGMASKED(LOG_COMM, "%s:%s comm read %04X = %02X\n", machine().describe_context(), num ? "slave" : "master", addr, ret);
+ if (!machine().side_effects_disabled())
+ {
+ state->m_addr = addr;
+
+ if (addr >= 0xf000)
+ LOGMASKED(LOG_COMM, "%s:%s comm read %04X = %02X\n", machine().describe_context(), num ? "slave" : "master", addr, ret);
+ }
return ret;
}