summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/snes/bsx.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/snes/bsx.h')
-rw-r--r--src/devices/bus/snes/bsx.h96
1 files changed, 53 insertions, 43 deletions
diff --git a/src/devices/bus/snes/bsx.h b/src/devices/bus/snes/bsx.h
index 677b81808dc..926959a7b32 100644
--- a/src/devices/bus/snes/bsx.h
+++ b/src/devices/bus/snes/bsx.h
@@ -1,45 +1,22 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SNS_BSX_H
-#define __SNS_BSX_H
+#ifndef MAME_BUS_SNES_BSX_H
+#define MAME_BUS_SNES_BSX_H
+
+#pragma once
#include "snes_slot.h"
#include "rom.h"
#include "rom21.h"
-class BSX_base
-{
-public:
- BSX_base(running_machine &machine);
- running_machine &machine() const { return m_machine; }
-
- void init();
- uint8_t read(uint32_t offset);
- void write(uint32_t offset, uint8_t data);
-
-private:
- // regs
- uint8_t regs[0x18]; // 0x2188-0x219f
-
- // counter + clock
- uint8_t r2192_counter;
- uint8_t r2192_hour, r2192_minute, r2192_second;
-
- running_machine& m_machine;
-};
-
// ======================> sns_rom_bsx_device
class sns_rom_bsx_device : public sns_rom_device
{
public:
// construction/destruction
- sns_rom_bsx_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
sns_rom_bsx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
// additional reading and writing
@@ -50,8 +27,38 @@ public:
virtual DECLARE_READ8_MEMBER(chip_read) override;
virtual DECLARE_WRITE8_MEMBER(chip_write) override;
+protected:
+ class bsx_base
+ {
+ public:
+ bsx_base(running_machine &machine);
+ running_machine &machine() const { return m_machine; }
+
+ void init();
+ uint8_t read(uint32_t offset);
+ void write(uint32_t offset, uint8_t data);
+
+ private:
+ // regs
+ uint8_t regs[0x18]; // 0x2188-0x219f
+
+ // counter + clock
+ uint8_t r2192_counter;
+ uint8_t r2192_hour, r2192_minute, r2192_second;
+
+ running_machine& m_machine;
+ };
+
+ sns_rom_bsx_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ void access_update();
+
// base regs
- std::unique_ptr<BSX_base> m_base_unit;
+ std::unique_ptr<bsx_base> m_base_unit;
// cart regs
uint8_t m_cart_regs[16];
@@ -61,8 +68,6 @@ public:
uint8_t access_50_5f; // 1 = NOTHING, 0 = PRAM
uint8_t access_60_6f; // 1 = PRAM, 0 = NOTHING
uint8_t rom_access; // 2 = HiROM, 1 = LoROM, 0 = PRAM
- void access_update();
-
uint8_t m_pram[0x80000];
@@ -78,14 +83,16 @@ public:
// construction/destruction
sns_rom_bsxlo_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
// additional reading and writing
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
required_device<sns_bsx_cart_slot_device> m_slot;
};
@@ -98,14 +105,16 @@ public:
// construction/destruction
sns_rom_bsxhi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
// additional reading and writing
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
required_device<sns_bsx_cart_slot_device> m_slot;
};
@@ -119,10 +128,6 @@ public:
// construction/destruction
sns_rom_bsmempak_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// additional reading and writing
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
@@ -131,6 +136,11 @@ public:
// virtual DECLARE_READ8_MEMBER(chip_read);
// virtual DECLARE_WRITE8_MEMBER(chip_write);
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
// flash regs
uint32_t m_command;
uint8_t m_write_old;
@@ -143,9 +153,9 @@ public:
// device type definition
-extern const device_type SNS_ROM_BSX;
-extern const device_type SNS_LOROM_BSX;
-extern const device_type SNS_HIROM_BSX;
-extern const device_type SNS_BSMEMPAK;
+DECLARE_DEVICE_TYPE(SNS_ROM_BSX, sns_rom_bsx_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_BSX, sns_rom_bsxlo_device)
+DECLARE_DEVICE_TYPE(SNS_HIROM_BSX, sns_rom_bsxhi_device)
+DECLARE_DEVICE_TYPE(SNS_BSMEMPAK, sns_rom_bsmempak_device)
-#endif
+#endif // MAME_BUS_SNES_BSX_H