Skip to content

Commit eff7b57

Browse files
author
David Haywood
committed
treat banking behavior as a potential difference between SoC types
1 parent 191b53e commit eff7b57

File tree

4 files changed

+30
-5
lines changed

4 files changed

+30
-5
lines changed

src/mame/tvgames/elan_eu3a05.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -875,16 +875,18 @@ void elan_eu3a05_state::elan_eu3a05_pal(machine_config& config)
875875
void elan_eu3a13_state::elan_eu3a13(machine_config& config)
876876
{
877877
elan_eu3a05(config);
878+
m_maincpu->set_addrmap(AS_PROGRAM, &elan_eu3a13_state::elan_eu3a13_map);
878879

879880
ELAN_EU3A13_VID(config.replace(), m_vid, 0);
880881
m_vid->set_cpu("maincpu");
881882
m_vid->set_addrbank("bank");
882883
m_vid->set_palette("palette");
883884
m_vid->set_entries(256);
884885

885-
m_maincpu->set_addrmap(AS_PROGRAM, &elan_eu3a13_state::elan_eu3a13_map);
886+
ELAN_EU3A13_SYS(config.replace(), m_sys, 0);
887+
m_sys->set_cpu("maincpu");
888+
m_sys->set_addrbank("bank");
886889
m_sys->set_alt_timer(); // for Carl Edwards'
887-
m_sys->set_bank_on_low_writes(); // for rad_ftet
888890
}
889891

890892
void elan_eu3a13_state::elan_eu3a13_pal(machine_config& config)

src/mame/tvgames/elan_eu3a05commonsys.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ class elan_eu3a05commonsys_device : public device_t
2626
uint8_t irq_vector_r(offs_t offset);
2727

2828
void set_alt_timer() { m_whichtimer = 1; }
29-
void set_bank_on_low_writes() { m_bank_on_low_bank_writes = true; }
3029
protected:
3130
// device-level overrides
3231
virtual void device_start() override ATTR_COLD;

src/mame/tvgames/elan_eu3a05sys.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,28 @@
77
// DMA size and destination are 16-bit here, they're 24-bit on EU3A14
88

99
DEFINE_DEVICE_TYPE(ELAN_EU3A05_SYS, elan_eu3a05sys_device, "elan_eu3a05sys", "Elan EU3A05 System")
10+
DEFINE_DEVICE_TYPE(ELAN_EU3A13_SYS, elan_eu3a13sys_device, "elan_eu3a13sys", "Elan EU3A13 System")
1011

11-
elan_eu3a05sys_device::elan_eu3a05sys_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
12-
elan_eu3a05commonsys_device(mconfig, ELAN_EU3A05_SYS, tag, owner, clock),
12+
elan_eu3a05sys_device::elan_eu3a05sys_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
13+
elan_eu3a05commonsys_device(mconfig, type, tag, owner, clock),
1314
device_memory_interface(mconfig, *this),
1415
m_space_config("regs", ENDIANNESS_NATIVE, 8, 5, 0, address_map_constructor(FUNC(elan_eu3a05sys_device::map), this))
1516
{
1617
}
1718

19+
elan_eu3a05sys_device::elan_eu3a05sys_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
20+
elan_eu3a05sys_device(mconfig, ELAN_EU3A05_SYS, tag, owner, clock)
21+
{
22+
}
23+
24+
elan_eu3a13sys_device::elan_eu3a13sys_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
25+
elan_eu3a05sys_device(mconfig, ELAN_EU3A13_SYS, tag, owner, clock)
26+
{
27+
// might be a difference on this hardware type, as rad_ftet (EU3A13) needs it, but rad_sinv (EU3A05) does not
28+
m_bank_on_low_bank_writes = true;
29+
}
30+
31+
1832
device_memory_interface::space_config_vector elan_eu3a05sys_device::memory_space_config() const
1933
{
2034
return space_config_vector {

src/mame/tvgames/elan_eu3a05sys.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ class elan_eu3a05sys_device : public elan_eu3a05commonsys_device, public device_
2020
virtual void map(address_map &map) override ATTR_COLD;
2121

2222
protected:
23+
elan_eu3a05sys_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
24+
2325
// device-level overrides
2426
virtual void device_start() override ATTR_COLD;
2527
virtual void device_reset() override ATTR_COLD;
@@ -30,6 +32,14 @@ class elan_eu3a05sys_device : public elan_eu3a05commonsys_device, public device_
3032
uint8_t m_dmaparams[7];
3133
};
3234

35+
36+
class elan_eu3a13sys_device : public elan_eu3a05sys_device
37+
{
38+
public:
39+
elan_eu3a13sys_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
40+
};
41+
3342
DECLARE_DEVICE_TYPE(ELAN_EU3A05_SYS, elan_eu3a05sys_device)
43+
DECLARE_DEVICE_TYPE(ELAN_EU3A13_SYS, elan_eu3a13sys_device)
3444

3545
#endif // MAME_TVGAMES_ELAN_EU3A05SYS_H

0 commit comments

Comments
 (0)