-vsmileb: Re-added generic cartslot for V.Smile Baby, nw
This commit is contained in:
parent
9fe597c242
commit
af07f89a7b
@ -19,6 +19,8 @@
|
|||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
|
|
||||||
|
#include "bus/generic/slot.h"
|
||||||
|
#include "bus/generic/carts.h"
|
||||||
#include "bus/vsmile/vsmile_slot.h"
|
#include "bus/vsmile/vsmile_slot.h"
|
||||||
#include "bus/vsmile/rom.h"
|
#include "bus/vsmile/rom.h"
|
||||||
|
|
||||||
@ -39,7 +41,6 @@ public:
|
|||||||
, m_spg(*this, "spg")
|
, m_spg(*this, "spg")
|
||||||
, m_maincpu(*this, "maincpu")
|
, m_maincpu(*this, "maincpu")
|
||||||
, m_screen(*this, "screen")
|
, m_screen(*this, "screen")
|
||||||
, m_cart(*this, "cartslot")
|
|
||||||
, m_bankdev(*this, "bank")
|
, m_bankdev(*this, "bank")
|
||||||
, m_system_region(*this, "maincpu")
|
, m_system_region(*this, "maincpu")
|
||||||
{ }
|
{ }
|
||||||
@ -52,7 +53,6 @@ protected:
|
|||||||
required_device<spg2xx_device> m_spg;
|
required_device<spg2xx_device> m_spg;
|
||||||
required_device<unsp_device> m_maincpu;
|
required_device<unsp_device> m_maincpu;
|
||||||
required_device<screen_device> m_screen;
|
required_device<screen_device> m_screen;
|
||||||
required_device<vsmile_cart_slot_device> m_cart;
|
|
||||||
required_device<address_map_bank_device> m_bankdev;
|
required_device<address_map_bank_device> m_bankdev;
|
||||||
required_memory_region m_system_region;
|
required_memory_region m_system_region;
|
||||||
};
|
};
|
||||||
@ -62,6 +62,7 @@ class vsmile_state : public vsmile_base_state
|
|||||||
public:
|
public:
|
||||||
vsmile_state(const machine_config &mconfig, device_type type, const char *tag)
|
vsmile_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: vsmile_base_state(mconfig, type, tag)
|
: vsmile_base_state(mconfig, type, tag)
|
||||||
|
, m_cart(*this, "cartslot")
|
||||||
, m_io_joy(*this, "JOY")
|
, m_io_joy(*this, "JOY")
|
||||||
, m_io_colors(*this, "COLORS")
|
, m_io_colors(*this, "COLORS")
|
||||||
, m_io_buttons(*this, "BUTTONS")
|
, m_io_buttons(*this, "BUTTONS")
|
||||||
@ -121,6 +122,7 @@ private:
|
|||||||
XMIT_STATE_CTS = 2
|
XMIT_STATE_CTS = 2
|
||||||
};
|
};
|
||||||
|
|
||||||
|
required_device<vsmile_cart_slot_device> m_cart;
|
||||||
required_ioport m_io_joy;
|
required_ioport m_io_joy;
|
||||||
required_ioport m_io_colors;
|
required_ioport m_io_colors;
|
||||||
required_ioport m_io_buttons;
|
required_ioport m_io_buttons;
|
||||||
@ -145,6 +147,9 @@ class vsmileb_state : public vsmile_base_state
|
|||||||
public:
|
public:
|
||||||
vsmileb_state(const machine_config &mconfig, device_type type, const char *tag)
|
vsmileb_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: vsmile_base_state(mconfig, type, tag)
|
: vsmile_base_state(mconfig, type, tag)
|
||||||
|
, m_cart(*this, "cartslot")
|
||||||
|
, m_cart_region(nullptr)
|
||||||
|
, m_cart_addr_mask(0)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
void vsmileb(machine_config &config);
|
void vsmileb(machine_config &config);
|
||||||
@ -154,6 +159,8 @@ private:
|
|||||||
|
|
||||||
void banked_map(address_map &map);
|
void banked_map(address_map &map);
|
||||||
|
|
||||||
|
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart);
|
||||||
|
|
||||||
DECLARE_READ16_MEMBER(porta_r);
|
DECLARE_READ16_MEMBER(porta_r);
|
||||||
DECLARE_READ16_MEMBER(portb_r);
|
DECLARE_READ16_MEMBER(portb_r);
|
||||||
DECLARE_READ16_MEMBER(portc_r);
|
DECLARE_READ16_MEMBER(portc_r);
|
||||||
@ -161,6 +168,11 @@ private:
|
|||||||
DECLARE_WRITE16_MEMBER(portb_w);
|
DECLARE_WRITE16_MEMBER(portb_w);
|
||||||
DECLARE_WRITE16_MEMBER(portc_w);
|
DECLARE_WRITE16_MEMBER(portc_w);
|
||||||
DECLARE_WRITE8_MEMBER(chip_sel_w);
|
DECLARE_WRITE8_MEMBER(chip_sel_w);
|
||||||
|
|
||||||
|
required_device<generic_slot_device> m_cart;
|
||||||
|
|
||||||
|
memory_region *m_cart_region;
|
||||||
|
uint32_t m_cart_addr_mask;
|
||||||
};
|
};
|
||||||
|
|
||||||
/************************************
|
/************************************
|
||||||
@ -412,9 +424,26 @@ void vsmileb_state::machine_start()
|
|||||||
{
|
{
|
||||||
vsmile_base_state::machine_start();
|
vsmile_base_state::machine_start();
|
||||||
|
|
||||||
|
if (m_cart && m_cart->exists())
|
||||||
|
{
|
||||||
|
std::string region_tag;
|
||||||
|
m_cart_region = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
|
||||||
|
m_cart_addr_mask = (m_cart_region->bytes() >> 1) - 1;
|
||||||
|
}
|
||||||
|
|
||||||
m_bankdev->set_bank(0);
|
m_bankdev->set_bank(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEVICE_IMAGE_LOAD_MEMBER(vsmileb_state, cart)
|
||||||
|
{
|
||||||
|
uint32_t size = m_cart->common_get_size("rom");
|
||||||
|
|
||||||
|
m_cart->rom_alloc(size, GENERIC_ROM16_WIDTH, ENDIANNESS_LITTLE);
|
||||||
|
m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
|
||||||
|
|
||||||
|
return image_init_result::PASS;
|
||||||
|
}
|
||||||
|
|
||||||
READ16_MEMBER(vsmileb_state::porta_r)
|
READ16_MEMBER(vsmileb_state::porta_r)
|
||||||
{
|
{
|
||||||
uint16_t data = 0x0380;
|
uint16_t data = 0x0380;
|
||||||
@ -438,17 +467,17 @@ READ16_MEMBER(vsmileb_state::portc_r)
|
|||||||
|
|
||||||
WRITE16_MEMBER(vsmileb_state::porta_w)
|
WRITE16_MEMBER(vsmileb_state::porta_w)
|
||||||
{
|
{
|
||||||
logerror("%s: GPIO Port A Write: %04x\n", machine().describe_context(), data);
|
logerror("%s: GPIO Port A Write: %04x & %04x = %04x\n", machine().describe_context(), data, mem_mask, data & mem_mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE16_MEMBER(vsmileb_state::portb_w)
|
WRITE16_MEMBER(vsmileb_state::portb_w)
|
||||||
{
|
{
|
||||||
logerror("%s: GPIO Port B Write: %04x\n", machine().describe_context(), data);
|
logerror("%s: GPIO Port B Write: %04x & %04x = %04x\n", machine().describe_context(), data, mem_mask, data & mem_mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE16_MEMBER(vsmileb_state::portc_w)
|
WRITE16_MEMBER(vsmileb_state::portc_w)
|
||||||
{
|
{
|
||||||
logerror("%s: GPIO Port C Write: %04x\n", machine().describe_context(), data);
|
logerror("%s: GPIO Port C Write: %04x & %04x = %04x\n", machine().describe_context(), data, mem_mask, data & mem_mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(vsmileb_state::chip_sel_w)
|
WRITE8_MEMBER(vsmileb_state::chip_sel_w)
|
||||||
@ -550,8 +579,6 @@ void vsmile_base_state::vsmile_base(machine_config &config)
|
|||||||
m_bankdev->set_data_width(16);
|
m_bankdev->set_data_width(16);
|
||||||
m_bankdev->set_shift(-1);
|
m_bankdev->set_shift(-1);
|
||||||
m_bankdev->set_stride(0x400000);
|
m_bankdev->set_stride(0x400000);
|
||||||
|
|
||||||
VSMILE_CART_SLOT(config, m_cart, vsmile_cart, nullptr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void vsmile_state::vsmile(machine_config &config)
|
void vsmile_state::vsmile(machine_config &config)
|
||||||
@ -566,6 +593,8 @@ void vsmile_state::vsmile(machine_config &config)
|
|||||||
|
|
||||||
m_bankdev->set_addrmap(AS_PROGRAM, &vsmile_state::banked_map);
|
m_bankdev->set_addrmap(AS_PROGRAM, &vsmile_state::banked_map);
|
||||||
|
|
||||||
|
VSMILE_CART_SLOT(config, m_cart, vsmile_cart, nullptr);
|
||||||
|
|
||||||
SOFTWARE_LIST(config, "cart_list").set_original("vsmile_cart");
|
SOFTWARE_LIST(config, "cart_list").set_original("vsmile_cart");
|
||||||
SOFTWARE_LIST(config, "cart_list2").set_original("vsmilem_cart");
|
SOFTWARE_LIST(config, "cart_list2").set_original("vsmilem_cart");
|
||||||
}
|
}
|
||||||
@ -590,6 +619,10 @@ void vsmileb_state::vsmileb(machine_config &config)
|
|||||||
|
|
||||||
m_bankdev->set_addrmap(AS_PROGRAM, &vsmileb_state::banked_map);
|
m_bankdev->set_addrmap(AS_PROGRAM, &vsmileb_state::banked_map);
|
||||||
|
|
||||||
|
GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "vsmile_cart");
|
||||||
|
m_cart->set_width(GENERIC_ROM16_WIDTH);
|
||||||
|
m_cart->set_device_load(device_image_load_delegate(&vsmileb_state::device_image_load_cart, this));
|
||||||
|
|
||||||
SOFTWARE_LIST(config, "cart_list").set_original("vsmileb_cart");
|
SOFTWARE_LIST(config, "cart_list").set_original("vsmileb_cart");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user