summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2026-05-10 10:45:00 +0200
committer hap <happppp@users.noreply.github.com>2026-05-10 15:13:02 +0200
commitfbe1b98b5e349f27fd1d9c8f2de57bf9307df579 (patch)
tree66c2e36f48b2a478295dbffec311cb8c161525f9
parentc0bba168a6fb68845bf47e41d47b0a5bf0aa3c60 (diff)
namcos21_c67/de: remove unneeded scanline timer
-rw-r--r--src/mame/namco/namcos21_3d.cpp10
-rw-r--r--src/mame/namco/namcos21_3d.h1
-rw-r--r--src/mame/namco/namcos21_c67.cpp28
-rw-r--r--src/mame/namco/namcos21_de.cpp13
4 files changed, 19 insertions, 33 deletions
diff --git a/src/mame/namco/namcos21_3d.cpp b/src/mame/namco/namcos21_3d.cpp
index c290b682a59..c760bcc899d 100644
--- a/src/mame/namco/namcos21_3d.cpp
+++ b/src/mame/namco/namcos21_3d.cpp
@@ -26,11 +26,6 @@ namcos21_3d_device::namcos21_3d_device(const machine_config &mconfig, const char
void namcos21_3d_device::device_start()
{
- allocate_poly_framebuffer();
-}
-
-void namcos21_3d_device::allocate_poly_framebuffer()
-{
assert(m_num_palettes != 0);
assert(m_framebuffer_size > 0);
@@ -70,10 +65,10 @@ void namcos21_3d_device::copy_visible_poly_framebuffer(bitmap_ind16 &bitmap, con
for (int sy = clip.top(); sy <= clip.bottom(); sy++)
{
u16 *const dest = &bitmap.pix(sy);
- const u16 *const pPen = m_poly_framebuffer_pens2.get() + m_poly_frame_width * sy;
+ const u16 *const source = m_poly_framebuffer_pens2.get() + m_poly_frame_width * sy;
for (int sx = clip.left(); sx <= clip.right(); sx++)
{
- const u16 pen = pPen[sx];
+ const u16 pen = source[sx];
if (pen)
dest[sx] = pen;
}
@@ -203,6 +198,7 @@ void namcos21_3d_device::rendertri(const n21_vertex *v0, const n21_vertex *v1, c
ystart = 0;
}
yend = std::min(yend, m_poly_frame_height);
+
for (int y = ystart; y < yend; y++)
{
renderscanline_flat(&e1, &e2, y, color, zsort);
diff --git a/src/mame/namco/namcos21_3d.h b/src/mame/namco/namcos21_3d.h
index 5c46e3284d2..5c27c0c58f4 100644
--- a/src/mame/namco/namcos21_3d.h
+++ b/src/mame/namco/namcos21_3d.h
@@ -56,7 +56,6 @@ private:
void renderscanline_flat(const edge *e1, const edge *e2, int sy, u16 color, int zsort);
void rendertri(const n21_vertex *v0, const n21_vertex *v1, const n21_vertex *v2, u16 color, int zsort);
void blit_single_quad(int sx[4], int sy[4], int zcode[4], u16 color);
- void allocate_poly_framebuffer();
std::unique_ptr<u16[]> m_poly_framebuffer_pens;
std::unique_ptr<u16[]> m_poly_framebuffer_z;
diff --git a/src/mame/namco/namcos21_c67.cpp b/src/mame/namco/namcos21_c67.cpp
index 81310f681bc..69a322eed55 100644
--- a/src/mame/namco/namcos21_c67.cpp
+++ b/src/mame/namco/namcos21_c67.cpp
@@ -283,7 +283,6 @@ Palette:
#include "cpu/m6809/m6809.h"
#include "machine/nvram.h"
#include "namcoio_gearbox.h"
-#include "machine/timer.h"
#include "sound/c140.h"
#include "sound/ymopm.h"
@@ -373,8 +372,7 @@ private:
void sound_reset_w(u8 data);
void system_reset_w(u8 data);
void reset_all_subcpus(int state);
-
- TIMER_DEVICE_CALLBACK_MEMBER(screen_scanline);
+ void vblank_irq(int state);
bool sprite_mix_callback(u16 &dest, u8 &destpri, u16 colbase, u16 src, int srcpri, int pri);
void mix_layer0_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -785,6 +783,16 @@ void namcos21_c67_state::reset_all_subcpus(int state)
m_slave_intc->reset();
}
+void namcos21_c67_state::vblank_irq(int state)
+{
+ if (state)
+ {
+ m_master_intc->vblank_irq_trigger();
+ m_slave_intc->vblank_irq_trigger();
+ m_c68->ext_interrupt(ASSERT_LINE);
+ }
+}
+
void namcos21_c67_state::machine_reset()
{
// Initialise the bank select in the sound CPU
@@ -804,25 +812,12 @@ void namcos21_c67_state::machine_start()
m_audiobank->configure_entry(i, memregion("audiocpu")->base() + (i % max) * 0x4000);
}
-TIMER_DEVICE_CALLBACK_MEMBER(namcos21_c67_state::screen_scanline)
-{
- int scanline = param;
-
- if (scanline == 240 * 2)
- {
- m_master_intc->vblank_irq_trigger();
- m_slave_intc->vblank_irq_trigger();
- m_c68->ext_interrupt(ASSERT_LINE);
- }
-}
-
// starblad, solvalou, aircomb, cybsled base state
void namcos21_c67_state::namcos21(machine_config &config)
{
// basic machine hardware
M68000(config, m_maincpu, 49.152_MHz_XTAL / 4); // Master
m_maincpu->set_addrmap(AS_PROGRAM, &namcos21_c67_state::master_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(namcos21_c67_state::screen_scanline), "screen", 0, 1);
M68000(config, m_slave, 49.152_MHz_XTAL / 4); // Slave
m_slave->set_addrmap(AS_PROGRAM, &namcos21_c67_state::slave_map);
@@ -862,6 +857,7 @@ void namcos21_c67_state::namcos21(machine_config &config)
m_screen->set_raw(38.76922_MHz_XTAL / 4 * 2, 616, 0, 496, 262 + 263, 0, 480); // x2 is for interlace
m_screen->set_screen_update(FUNC(namcos21_c67_state::screen_update));
m_screen->set_palette(m_palette);
+ m_screen->screen_vblank().set(FUNC(namcos21_c67_state::vblank_irq));
NAMCOS21_3D(config, m_namcos21_3d, 0);
m_namcos21_3d->set_framebuffer_size(496, 480);
diff --git a/src/mame/namco/namcos21_de.cpp b/src/mame/namco/namcos21_de.cpp
index 0f4321be311..4b3b403015d 100644
--- a/src/mame/namco/namcos21_de.cpp
+++ b/src/mame/namco/namcos21_de.cpp
@@ -39,7 +39,6 @@ TODO:
#include "cpu/m6809/m6809.h"
#include "cpu/tms320c2x/tms320c2x.h"
#include "machine/nvram.h"
-#include "machine/timer.h"
#include "sound/c140.h"
#include "sound/mb87077.h"
#include "sound/mixer.h"
@@ -106,8 +105,7 @@ private:
void sound_reset_w(u8 data);
void system_reset_w(u8 data);
void reset_all_subcpus(int state);
-
- TIMER_DEVICE_CALLBACK_MEMBER(screen_scanline);
+ void vblank_irq(int state);
bool sprite_mix_callback(u16 &dest, u8 &destpri, u16 colbase, u16 src, int srcpri, int pri);
u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -155,7 +153,6 @@ void namco_de_pcbstack_device::device_add_mconfig(machine_config &config)
// basic machine hardware
M68000(config, m_maincpu, 49.152_MHz_XTAL / 4); // Master
m_maincpu->set_addrmap(AS_PROGRAM, &namco_de_pcbstack_device::driveyes_master_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(namco_de_pcbstack_device::screen_scanline), "screen", 0, 1);
M68000(config, m_slave, 49.152_MHz_XTAL / 4); // Slave
m_slave->set_addrmap(AS_PROGRAM, &namco_de_pcbstack_device::driveyes_slave_map);
@@ -205,6 +202,7 @@ void namco_de_pcbstack_device::device_add_mconfig(machine_config &config)
m_screen->set_raw(38.76922_MHz_XTAL / 4 * 2, 616, 0, 496, 262 + 263, 0, 480); // x2 is for interlace
m_screen->set_screen_update(FUNC(namco_de_pcbstack_device::screen_update));
m_screen->set_palette(m_palette);
+ m_screen->screen_vblank().set(FUNC(namco_de_pcbstack_device::vblank_irq));
PALETTE(config, m_palette).set_format(palette_device::xBRG_888, 0x10000/2);
@@ -452,12 +450,9 @@ void namco_de_pcbstack_device::reset_all_subcpus(int state)
m_slave_intc->reset();
}
-
-TIMER_DEVICE_CALLBACK_MEMBER(namco_de_pcbstack_device::screen_scanline)
+void namco_de_pcbstack_device::vblank_irq(int state)
{
- int scanline = param;
-
- if (scanline == 240 * 2)
+ if (state)
{
m_master_intc->vblank_irq_trigger();
m_slave_intc->vblank_irq_trigger();