diff options
Diffstat (limited to 'src/mame/drivers/tvboy.cpp')
-rw-r--r-- | src/mame/drivers/tvboy.cpp | 53 |
1 files changed, 27 insertions, 26 deletions
diff --git a/src/mame/drivers/tvboy.cpp b/src/mame/drivers/tvboy.cpp index c4fd1f02f2c..d0fb7f2b7f3 100644 --- a/src/mame/drivers/tvboy.cpp +++ b/src/mame/drivers/tvboy.cpp @@ -18,36 +18,48 @@ TODO: #include "softlist.h" #include "speaker.h" -class tvboy_state : public a2600_state +class tvboy_state : public a2600_base_state { public: tvboy_state(const machine_config &mconfig, device_type type, const char *tag) - : a2600_state(mconfig, type, tag) + : a2600_base_state(mconfig, type, tag) , m_crom(*this, "crom") - , m_rom(*this, "mainrom") { } - - DECLARE_WRITE8_MEMBER(bank_write); + , m_rom(*this, "mainrom") + { } void tvboyii(machine_config &config); +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + + DECLARE_WRITE8_MEMBER(bank_write); + void rom_map(address_map &map); void tvboy_mem(address_map &map); + private: - required_device<address_map_bank_device> m_crom; + required_memory_bank m_crom; required_region_ptr<uint8_t> m_rom; - - virtual void machine_reset() override; }; -void tvboy_state::machine_reset() { - m_crom->set_bank(0); - a2600_state::machine_reset(); +void tvboy_state::machine_start() +{ + a2600_base_state::machine_start(); + m_crom->configure_entries(0, m_rom.bytes() / 0x1000, &m_rom[0], 0x1000); +} + +void tvboy_state::machine_reset() +{ + m_crom->set_entry(0); + a2600_base_state::machine_reset(); } -WRITE8_MEMBER(tvboy_state::bank_write) { +WRITE8_MEMBER(tvboy_state::bank_write) +{ logerror("banking (?) write %04x, %02x\n", offset, data); - if ((offset & 0xFF00) == 0x0800) - m_crom->set_bank(data); + if ((offset & 0xff00) == 0x0800) + m_crom->set_entry(data); } ADDRESS_MAP_START(tvboy_state::tvboy_mem) // 6507 has 13-bit address space, 0x0000 - 0x1fff @@ -59,11 +71,7 @@ ADDRESS_MAP_START(tvboy_state::tvboy_mem) // 6507 has 13-bit address space, 0x00 AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x0d00) AM_DEVREADWRITE("riot", riot6532_device, read, write) #endif AM_RANGE(0x1000, 0x1fff) AM_WRITE(bank_write) - AM_RANGE(0x1000, 0x1fff) AM_DEVICE("crom", address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tvboy_state::rom_map) - AM_RANGE(0x00000, 0x7ffff) AM_ROM AM_REGION("mainrom", 0) + AM_RANGE(0x1000, 0x1fff) AM_ROMBANK("crom") ADDRESS_MAP_END #define MASTER_CLOCK_PAL 3546894 @@ -74,13 +82,6 @@ MACHINE_CONFIG_START(tvboy_state::tvboyii) MCFG_CPU_PROGRAM_MAP(tvboy_mem) MCFG_M6502_DISABLE_DIRECT() - MCFG_DEVICE_ADD("crom", ADDRESS_MAP_BANK, 0) - MCFG_DEVICE_PROGRAM_MAP(rom_map) - MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE) - MCFG_ADDRESS_MAP_BANK_DATA_WIDTH(8) - MCFG_ADDRESS_MAP_BANK_ADDR_WIDTH(19) - MCFG_ADDRESS_MAP_BANK_STRIDE(0x1000) - /* video hardware */ MCFG_DEVICE_ADD("tia_video", TIA_PAL_VIDEO, 0) MCFG_TIA_READ_INPUT_PORT_CB(READ16(tvboy_state, a2600_read_input_port)) |