summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/pc090oj.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/video/pc090oj.h')
-rw-r--r--src/mame/video/pc090oj.h34
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)