diff options
Diffstat (limited to 'src/mame/video/pc090oj.h')
-rw-r--r-- | src/mame/video/pc090oj.h | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/src/mame/video/pc090oj.h b/src/mame/video/pc090oj.h index 930aa5aecc0..6a518d9b669 100644 --- a/src/mame/video/pc090oj.h +++ b/src/mame/video/pc090oj.h @@ -5,27 +5,28 @@ #pragma once +typedef device_delegate<void (u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl)> pc090oj_colpri_cb_delegate; + class pc090oj_device : public device_t, public device_gfx_interface { public: - pc090oj_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + pc090oj_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); // configuration - template <typename T> void set_gfxdecode_tag(T &&tag) { m_gfxdecode.set_tag(std::forward<T>(tag)); } - void set_gfx_region(int gfxregion) { m_gfxnum = gfxregion; } - void set_usebuffer(int use_buf) { m_use_buffer = use_buf; } + void set_usebuffer(bool use_buf) { m_use_buffer = use_buf; } void set_offsets(int x_offset, int y_offset) { m_x_offset = x_offset; m_y_offset = y_offset; } + template <typename... T> void set_colpri_callback(T &&... args) { m_colpri_cb = pc090oj_colpri_cb_delegate(std::forward<T>(args)...); } - DECLARE_READ16_MEMBER( word_r ); - DECLARE_WRITE16_MEMBER( word_w ); + u16 word_r(offs_t offset); + void word_w(offs_t offset, u16 data, u16 mem_mask = 0); + void sprite_ctrl_w(u16 data); - void set_sprite_ctrl(uint16_t sprctrl); void eof_callback(); - void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, int pri_type); + void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); protected: // device-level overrides @@ -42,18 +43,19 @@ private: routines here modular. */ + pc090oj_colpri_cb_delegate m_colpri_cb; - uint16_t m_ctrl; - uint16_t m_sprite_ctrl; + // decoding info + DECLARE_GFXDECODE_MEMBER(gfxinfo); - std::unique_ptr<uint16_t[]> m_ram; - std::unique_ptr<uint16_t[]> m_ram_buffered; + u16 m_ctrl; + u16 m_sprite_ctrl; - int m_gfxnum; - int m_x_offset, m_y_offset; - int m_use_buffer; + std::unique_ptr<u16[]> m_ram; + std::unique_ptr<u16[]> m_ram_buffered; - required_device<gfxdecode_device> m_gfxdecode; + int m_x_offset, m_y_offset; + bool m_use_buffer; }; DECLARE_DEVICE_TYPE(PC090OJ, pc090oj_device) |