summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/misc/efdt.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/misc/efdt.h')
-rw-r--r--src/mame/misc/efdt.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/mame/misc/efdt.h b/src/mame/misc/efdt.h
new file mode 100644
index 00000000000..0dd9121be78
--- /dev/null
+++ b/src/mame/misc/efdt.h
@@ -0,0 +1,78 @@
+// license:BSD-3-Clause
+// copyright-holders: ElSemi, Roberto Fresca.
+#ifndef MAME_MISC_EFDT_H
+#define MAME_MISC_EFDT_H
+
+#pragma once
+
+#include "machine/74259.h"
+#include "emupal.h"
+#include "tilemap.h"
+
+
+class efdt_state : public driver_device
+{
+public:
+ efdt_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_gfxdecode(*this, "gfxdecode"),
+ m_palette(*this, "palette"),
+ m_audiocpu(*this, "audiocpu"),
+ m_vlatch(*this, "vlatch%u", 1U),
+ m_videoram(*this, "videoram")
+ { }
+
+ void efdt(machine_config &config);
+
+protected:
+ virtual void machine_start() override ATTR_COLD;
+ virtual void machine_reset() override ATTR_COLD;
+ virtual void video_start() override ATTR_COLD;
+
+private:
+ required_device<cpu_device> m_maincpu;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
+ optional_device<cpu_device> m_audiocpu;
+ required_device_array<ls259_device, 2> m_vlatch;
+
+ /* memory pointers */
+ required_shared_ptr<uint8_t> m_videoram;
+ uint8_t m_soundlatch[4]{};
+ uint8_t m_soundCommand = 0U;
+ uint8_t m_soundControl = 0U;
+
+
+ /* video-related */
+ tilemap_t *m_tilemap[2]{};
+ int m_tilebank = 0;
+
+ TILE_GET_INFO_MEMBER(get_tile_info_0);
+ TILE_GET_INFO_MEMBER(get_tile_info_1);
+
+ void efdt_palette(palette_device &palette) const;
+
+ void vblank_nmi_w(int state);
+ void nmi_clear_w(int state);
+
+ uint8_t main_soundlatch_r(offs_t offset);
+ void main_soundlatch_w(offs_t offset, uint8_t data);
+
+ uint8_t soundlatch_0_r();
+ uint8_t soundlatch_1_r();
+ uint8_t soundlatch_2_r();
+ uint8_t soundlatch_3_r();
+
+ void soundlatch_0_w(uint8_t data);
+ void soundlatch_1_w(uint8_t data);
+ void soundlatch_2_w(uint8_t data);
+ void soundlatch_3_w(uint8_t data);
+
+ uint32_t screen_update_efdt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+ void efdt_map(address_map &map) ATTR_COLD;
+ void efdt_snd_map(address_map &map) ATTR_COLD;
+};
+
+#endif // MAME_MISC_EFDT_H