summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/konami/k007121.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/konami/k007121.h')
-rw-r--r--src/mame/konami/k007121.h18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/mame/konami/k007121.h b/src/mame/konami/k007121.h
index 7119089764d..d4355dc0951 100644
--- a/src/mame/konami/k007121.h
+++ b/src/mame/konami/k007121.h
@@ -11,6 +11,8 @@
class k007121_device : public device_t, public device_gfx_interface, public device_video_interface
{
public:
+ using sprite_delegate = device_delegate<void (int &code, int &color, int colbank)>;
+
template<typename T, typename U>
k007121_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, const gfx_decode_entry *gfxinfo, T &&palette_tag, U &&screen_tag)
: k007121_device(mconfig, tag, owner, clock)
@@ -21,10 +23,18 @@ public:
}
k007121_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // configuration
+ void set_spr_dx(int dx, int flip_dx)
+ {
+ m_spr_dx = dx;
+ m_spr_flip_dx = flip_dx;
+ }
+
auto set_irq_cb() { return m_irq_cb.bind(); }
//auto set_firq_cb() { return m_firq_cb.bind(); } // unused
auto set_nmi_cb() { return m_nmi_cb.bind(); }
auto set_flipscreen_cb() { return m_flipscreen_cb.bind(); }
+ template <typename... T> void set_sprite_callback(T &&... args) { m_sprite_cb.set(std::forward<T>(args)...); }
void set_spriteram(uint8_t *spriteram) { m_spriteram = spriteram; }
void register_tilemap(tilemap_t *tilemap) { m_tilemaps.push_back(tilemap); }
@@ -37,14 +47,17 @@ public:
uint8_t scroll_r(offs_t offset) { return m_scrollram[offset & 0x3f]; }
void scroll_w(offs_t offset, uint8_t data) { m_scrollram[offset & 0x3f] = data; }
- void sprites_draw(bitmap_ind16 &bitmap, const rectangle &cliprect, int base_color, int global_x_offset, int bank_base, bitmap_ind8 &priority_bitmap, uint32_t pri_mask);
+ void sprites_draw(bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, uint32_t pri_mask);
protected:
- // device-level overrides
+ // device_t implementation
virtual void device_start() override ATTR_COLD;
virtual void device_reset() override ATTR_COLD;
private:
+ // configuration
+ int32_t m_spr_dx, m_spr_flip_dx;
+
// internal state
uint8_t m_ctrlram[8];
uint8_t m_scrollram[0x40];
@@ -58,6 +71,7 @@ private:
devcb_write_line m_irq_cb;
devcb_write_line m_firq_cb;
devcb_write_line m_nmi_cb;
+ sprite_delegate m_sprite_cb;
void sprites_buffer();
TIMER_CALLBACK_MEMBER(scanline);