summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/midway/midwunit.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/midway/midwunit.h')
-rw-r--r--src/mame/midway/midwunit.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/mame/midway/midwunit.h b/src/mame/midway/midwunit.h
new file mode 100644
index 00000000000..4fccc28a254
--- /dev/null
+++ b/src/mame/midway/midwunit.h
@@ -0,0 +1,92 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles,Ernesto Corvi
+/*************************************************************************
+
+ Driver for Midway Wolf-unit games.
+
+**************************************************************************/
+#ifndef MAME_MIDWAY_MIDWUNIT_H
+#define MAME_MIDWAY_MIDWUNIT_H
+
+#pragma once
+
+#include "midwayic.h"
+#include "midtunit_v.h"
+
+#include "dcs.h"
+
+#include "cpu/tms34010/tms34010.h"
+
+#include "emupal.h"
+
+class midwunit_state : public driver_device
+{
+public:
+ midwunit_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_video(*this, "video")
+ , m_dcs(*this, "dcs")
+ , m_palette(*this, "palette")
+ , m_midway_serial_pic(*this, "serial_security_sim")
+ , m_midway_serial_pic_emu(*this, "serial_security")
+ , m_nvram(*this, "nvram")
+ , m_mainram(*this, "mainram")
+ , m_ports(*this, { { "IN0", "IN1", "DSW", "IN2" } })
+ { }
+
+ void wunit(machine_config &config);
+ void wunit_picemu(machine_config &config);
+ void wunit_picsim(machine_config &config);
+
+ void init_mk3r10();
+ void init_nbahangt();
+ void init_wwfmania();
+ void init_umk3();
+ void init_mk3();
+ void init_openice();
+ void init_rmpgwt();
+ void init_umk3r11();
+ void init_mk3r20();
+
+protected:
+ virtual void machine_start() override ATTR_COLD;
+ virtual void machine_reset() override ATTR_COLD;
+
+private:
+ void cmos_enable_w(uint16_t data);
+ void cmos_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ uint16_t cmos_r(offs_t offset);
+ void io_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ uint16_t io_r(offs_t offset);
+ uint16_t security_r();
+ void security_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ uint16_t sound_r();
+ uint16_t sound_state_r();
+ void sound_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ void umk3_palette_hack_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ void wwfmania_io_0_w(uint16_t data);
+
+ void init_mk3_common();
+ void main_map(address_map &map) ATTR_COLD;
+
+ required_device<tms340x0_device> m_maincpu;
+ required_device<midtunit_video_device> m_video;
+ required_device<dcs_audio_device> m_dcs;
+ required_device<palette_device> m_palette;
+
+ optional_device<midway_serial_pic_device> m_midway_serial_pic;
+ optional_device<midway_serial_pic_emu_device> m_midway_serial_pic_emu;
+ required_shared_ptr<uint16_t> m_nvram;
+ required_shared_ptr<uint16_t> m_mainram;
+ required_ioport_array<4> m_ports;
+
+ uint8_t m_cmos_write_enable = 0;
+ uint16_t m_iodata[8] = {};
+ uint8_t m_ioshuffle[16] = {};
+ uint8_t m_uart[8] = {};
+ uint8_t m_security_bits = 0;
+ uint16_t *m_umk3_palette = nullptr;
+};
+
+#endif // MAME_MIDWAY_MIDWUNIT_H