summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/snes/upd.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/snes/upd.h')
-rw-r--r--src/devices/bus/snes/upd.h223
1 files changed, 223 insertions, 0 deletions
diff --git a/src/devices/bus/snes/upd.h b/src/devices/bus/snes/upd.h
new file mode 100644
index 00000000000..28fdf077f11
--- /dev/null
+++ b/src/devices/bus/snes/upd.h
@@ -0,0 +1,223 @@
+// license:BSD-3-Clause
+// copyright-holders:Fabio Priuli
+#ifndef __SNS_UPD_H
+#define __SNS_UPD_H
+
+#include "snes_slot.h"
+#include "rom.h"
+#include "rom21.h"
+#include "cpu/upd7725/upd7725.h"
+
+// ======================> sns_rom_necdsp_device
+
+class sns_rom20_necdsp_device : public sns_rom_device
+{
+public:
+ // construction/destruction
+ sns_rom20_necdsp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
+ sns_rom20_necdsp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual void device_start();
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual void speedup_addon_bios_access();
+
+ required_device<upd7725_device> m_upd7725;
+
+ // additional reading and writing
+ virtual DECLARE_READ8_MEMBER(chip_read);
+ virtual DECLARE_WRITE8_MEMBER(chip_write);
+
+ virtual DECLARE_READ32_MEMBER(necdsp_prg_r);
+ virtual DECLARE_READ16_MEMBER(necdsp_data_r);
+
+ std::vector<UINT32> m_dsp_prg;
+ std::vector<UINT16> m_dsp_data;
+};
+
+// ======================> sns_rom21_necdsp_device
+
+class sns_rom21_necdsp_device : public sns_rom21_device
+{
+public:
+ // construction/destruction
+ sns_rom21_necdsp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
+ sns_rom21_necdsp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual void device_start();
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual void speedup_addon_bios_access();
+
+ required_device<upd7725_device> m_upd7725;
+
+ // additional reading and writing
+ virtual DECLARE_READ8_MEMBER(chip_read);
+ virtual DECLARE_WRITE8_MEMBER(chip_write);
+
+ virtual DECLARE_READ32_MEMBER(necdsp_prg_r);
+ virtual DECLARE_READ16_MEMBER(necdsp_data_r);
+
+ std::vector<UINT32> m_dsp_prg;
+ std::vector<UINT16> m_dsp_data;
+};
+
+// ======================> sns_rom_setadsp_device
+
+class sns_rom_setadsp_device : public sns_rom_device
+{
+public:
+ // construction/destruction
+ sns_rom_setadsp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
+
+ // device-level overrides
+ virtual void device_start();
+ virtual void speedup_addon_bios_access();
+
+ required_device<upd96050_device> m_upd96050;
+
+ // additional reading and writing
+ virtual DECLARE_READ8_MEMBER(chip_read);
+ virtual DECLARE_WRITE8_MEMBER(chip_write);
+
+ virtual DECLARE_READ32_MEMBER(setadsp_prg_r);
+ virtual DECLARE_READ16_MEMBER(setadsp_data_r);
+
+ std::vector<UINT32> m_dsp_prg;
+ std::vector<UINT16> m_dsp_data;
+};
+
+// ======================> sns_rom_seta10dsp_device
+
+class sns_rom_seta10dsp_device : public sns_rom_setadsp_device
+{
+public:
+ // construction/destruction
+ sns_rom_seta10dsp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+};
+
+// ======================> sns_rom_seta11dsp_device [Faster CPU than ST010]
+
+class sns_rom_seta11dsp_device : public sns_rom_setadsp_device
+{
+public:
+ // construction/destruction
+ sns_rom_seta11dsp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+};
+
+
+// device type definition
+extern const device_type SNS_LOROM_NECDSP;
+extern const device_type SNS_HIROM_NECDSP;
+extern const device_type SNS_LOROM_SETA10;
+extern const device_type SNS_LOROM_SETA11;
+
+
+
+
+// Devices including DSP dumps to support faulty .sfc dumps missing DSP data
+
+class sns_rom20_necdsp1_legacy_device : public sns_rom20_necdsp_device
+{
+public:
+ // construction/destruction
+ sns_rom20_necdsp1_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual const rom_entry *device_rom_region() const;
+};
+
+class sns_rom20_necdsp1b_legacy_device : public sns_rom20_necdsp_device
+{
+public:
+ // construction/destruction
+ sns_rom20_necdsp1b_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual const rom_entry *device_rom_region() const;
+};
+
+class sns_rom20_necdsp2_legacy_device : public sns_rom20_necdsp_device
+{
+public:
+ // construction/destruction
+ sns_rom20_necdsp2_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual const rom_entry *device_rom_region() const;
+};
+
+class sns_rom20_necdsp3_legacy_device : public sns_rom20_necdsp_device
+{
+public:
+ // construction/destruction
+ sns_rom20_necdsp3_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual const rom_entry *device_rom_region() const;
+};
+
+class sns_rom20_necdsp4_legacy_device : public sns_rom20_necdsp_device
+{
+public:
+ // construction/destruction
+ sns_rom20_necdsp4_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual const rom_entry *device_rom_region() const;
+};
+
+class sns_rom21_necdsp1_legacy_device : public sns_rom21_necdsp_device
+{
+public:
+ // construction/destruction
+ sns_rom21_necdsp1_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual const rom_entry *device_rom_region() const;
+};
+
+class sns_rom_seta10dsp_legacy_device : public sns_rom_setadsp_device
+{
+public:
+ // construction/destruction
+ sns_rom_seta10dsp_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual const rom_entry *device_rom_region() const;
+};
+
+class sns_rom_seta11dsp_legacy_device : public sns_rom_setadsp_device
+{
+public:
+ // construction/destruction
+ sns_rom_seta11dsp_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual const rom_entry *device_rom_region() const;
+};
+
+extern const device_type SNS_LOROM_NECDSP1_LEG;
+extern const device_type SNS_LOROM_NECDSP1B_LEG;
+extern const device_type SNS_LOROM_NECDSP2_LEG;
+extern const device_type SNS_LOROM_NECDSP3_LEG;
+extern const device_type SNS_LOROM_NECDSP4_LEG;
+extern const device_type SNS_HIROM_NECDSP1_LEG;
+extern const device_type SNS_LOROM_SETA10_LEG;
+extern const device_type SNS_LOROM_SETA11_LEG;
+
+#endif