summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/includes/vtech2.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/includes/vtech2.h')
-rw-r--r--src/mame/includes/vtech2.h96
1 files changed, 96 insertions, 0 deletions
diff --git a/src/mame/includes/vtech2.h b/src/mame/includes/vtech2.h
new file mode 100644
index 00000000000..9a7efd680b0
--- /dev/null
+++ b/src/mame/includes/vtech2.h
@@ -0,0 +1,96 @@
+// license:GPL-2.0+
+// copyright-holders:Juergen Buchmueller
+/*****************************************************************************
+ *
+ * includes/vtech2.h
+ *
+ ****************************************************************************/
+
+#ifndef VTECH2_H_
+#define VTECH2_H_
+#include "sound/speaker.h"
+#include "imagedev/cassette.h"
+#include "bus/generic/slot.h"
+#include "bus/generic/carts.h"
+
+#define TRKSIZE_FM 3172 /* size of a standard FM mode track */
+
+class vtech2_state : public driver_device
+{
+public:
+ vtech2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_speaker(*this, "speaker"),
+ m_cassette(*this, "cassette"),
+ m_cart(*this, "cartslot"),
+ m_gfxdecode(*this, "gfxdecode"),
+ m_palette(*this, "palette") { }
+
+ UINT8 *m_videoram;
+ int m_laser_latch;
+ char m_laser_frame_message[64+1];
+ int m_laser_frame_time;
+ UINT8 *m_mem;
+ int m_laser_bank_mask;
+ int m_laser_bank[4];
+ int m_laser_video_bank;
+ UINT8 m_laser_track_x2[2];
+ UINT8 m_laser_fdc_status;
+ UINT8 m_laser_fdc_data[TRKSIZE_FM];
+ int m_laser_data;
+ int m_laser_fdc_edge;
+ int m_laser_fdc_bits;
+ int m_laser_drive;
+ int m_laser_fdc_start;
+ int m_laser_fdc_write;
+ int m_laser_fdc_offs;
+ int m_laser_fdc_latch;
+ int m_level_old;
+ int m_cassette_bit;
+ int m_row_a;
+ int m_row_b;
+ int m_row_c;
+ int m_row_d;
+ int m_laser_bg_mode;
+ int m_laser_two_color;
+ DECLARE_WRITE8_MEMBER(laser_bank_select_w);
+ DECLARE_WRITE8_MEMBER(laser_fdc_w);
+ DECLARE_WRITE8_MEMBER(laser_bg_mode_w);
+ DECLARE_WRITE8_MEMBER(laser_two_color_w);
+ DECLARE_READ8_MEMBER(laser_fdc_r);
+ DECLARE_DRIVER_INIT(laser);
+ virtual void machine_reset();
+ virtual void video_start();
+ DECLARE_PALETTE_INIT(vtech2);
+ DECLARE_MACHINE_RESET(laser500);
+ DECLARE_MACHINE_RESET(laser700);
+ UINT32 screen_update_laser(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ INTERRUPT_GEN_MEMBER(vtech2_interrupt);
+
+ int mra_bank(int bank, int offs);
+ void mwa_bank(int bank, int offs, int data);
+ memory_region *m_cart_rom;
+
+ DECLARE_WRITE8_MEMBER(mwa_bank1);
+ DECLARE_WRITE8_MEMBER(mwa_bank2);
+ DECLARE_WRITE8_MEMBER(mwa_bank3);
+ DECLARE_WRITE8_MEMBER(mwa_bank4);
+ DECLARE_READ8_MEMBER(mra_bank1);
+ DECLARE_READ8_MEMBER(mra_bank2);
+ DECLARE_READ8_MEMBER(mra_bank3);
+ DECLARE_READ8_MEMBER(mra_bank4);
+ required_device<cpu_device> m_maincpu;
+ required_device<speaker_sound_device> m_speaker;
+ required_device<cassette_image_device> m_cassette;
+ required_device<generic_slot_device> m_cart;
+ void laser_machine_init(int bank_mask, int video_mask);
+ void laser_get_track();
+ void laser_put_track();
+ device_t *laser_file();
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
+};
+
+
+#endif /* VTECH2_H_ */