summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/video/hd63484.h
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2015-09-13 08:41:44 +0200
committer Miodrag Milanovic <mmicko@gmail.com>2015-09-13 08:41:44 +0200
commitf88cefad27a1737c76e09d99c9fb43e173506081 (patch)
tree2d8167d03579c46e226471747eb4407bd00ed6fa /src/devices/video/hd63484.h
parente92ac9e0fa8e99869894bea00589bbb526be30aa (diff)
Move all devices into separate part of src tree (nw)
Diffstat (limited to 'src/devices/video/hd63484.h')
-rw-r--r--src/devices/video/hd63484.h81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/devices/video/hd63484.h b/src/devices/video/hd63484.h
new file mode 100644
index 00000000000..08d147a8081
--- /dev/null
+++ b/src/devices/video/hd63484.h
@@ -0,0 +1,81 @@
+// license:BSD-3-Clause
+// copyright-holders:Roberto Zandona'
+/*************************************************************************
+
+ HD63484 ACRTC
+ Advanced CRT Controller.
+
+**************************************************************************/
+
+#ifndef __HD63484_H__
+#define __HD63484_H__
+
+
+/* the on-chip FIFO is 16 bytes long, but we use a larger one to simplify */
+/* decoding of long commands. Commands can be up to 64KB long... but Shanghai */
+/* doesn't reach that length. */
+
+#define FIFO_LENGTH 256
+#define HD63484_RAM_SIZE 0x100000
+
+
+/***************************************************************************
+ TYPE DEFINITIONS
+***************************************************************************/
+
+class hd63484_device : public device_t
+{
+public:
+ hd63484_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ ~hd63484_device() {}
+
+ DECLARE_READ16_MEMBER( status_r );
+ DECLARE_WRITE16_MEMBER( address_w );
+ DECLARE_WRITE16_MEMBER( data_w );
+ DECLARE_READ16_MEMBER( data_r );
+
+ DECLARE_READ16_MEMBER( ram_r );
+ DECLARE_READ16_MEMBER( regs_r );
+ DECLARE_WRITE16_MEMBER( ram_w );
+ DECLARE_WRITE16_MEMBER( regs_w );
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ // internal state
+ UINT16 * m_ram;
+ UINT16 m_reg[256/2];
+
+ int m_fifo_counter;
+ UINT16 m_fifo[FIFO_LENGTH];
+ UINT16 m_readfifo;
+
+ UINT16 m_pattern[16];
+ int m_org, m_org_dpd, m_rwp;
+ UINT16 m_cl0, m_cl1, m_ccmp, m_edg, m_mask, m_ppy, m_pzcy, m_ppx, m_pzcx, m_psy, m_psx, m_pey, m_pzy, m_pex, m_pzx, m_xmin, m_ymin, m_xmax, m_ymax, m_rwp_dn;
+ INT16 m_cpx, m_cpy;
+
+ int m_regno;
+ int m_skattva_hack;
+
+ void doclr16( int opcode, UINT16 fill, int *dst, INT16 _ax, INT16 _ay );
+ void docpy16( int opcode, int src, int *dst, INT16 _ax, INT16 _ay );
+ int org_first_pixel( int _org_dpd );
+ void dot( int x, int y, int opm, UINT16 color );
+ int get_pixel( int x, int y );
+ int get_pixel_ptn( int x, int y );
+ void agcpy( int opcode, int src_x, int src_y, int dst_x, int dst_y, INT16 _ax, INT16 _ay );
+ void ptn( int opcode, int src_x, int src_y, INT16 _ax, INT16 _ay );
+ void line( INT16 sx, INT16 sy, INT16 ex, INT16 ey, INT16 col );
+ void circle( INT16 sx, INT16 sy, UINT16 r, INT16 col );
+ void paint( int sx, int sy, int col );
+
+ void command_w(UINT16 cmd);
+};
+
+extern ATTR_DEPRECATED const device_type HD63484;
+
+#endif /* __HD63484_H__ */