Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // license:BSD
- // copyright-holders:Wilbert Pol
- /***************************************************************************
- Nichibutsu My Vision
- driver by Wilbert Pol
- 2013/12/01 Skeleton driver.
- TODO:
- - Create software list, mark the cartslot as mandotory, and remove the
- test cartridge from system's rom definition.
- - Implement cnd figure out ontrols
- - Should there be any sound? If so, add it
- - Get exact TMS9918 model verified
- - Get clock crystal(s) verified
- - Get size of vram verified
- ****************************************************************************/
- #include "emu.h"
- #include "cpu/z80/z80.h"
- #include "imagedev/cartslot.h"
- #include "video/tms9928a.h"
- class myvision_state : public driver_device
- {
- public:
- myvision_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- { }
- DECLARE_WRITE_LINE_MEMBER( vdp_interrupt );
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER( cart );
- private:
- virtual void machine_reset();
- required_device<cpu_device> m_maincpu;
- };
- static ADDRESS_MAP_START(myvision_mem, AS_PROGRAM, 8, myvision_state)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x5fff ) AM_ROM
- AM_RANGE( 0xa000, 0xa7ff ) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("tms9918", tms9918a_device, vram_read, vram_write)
- AM_RANGE(0xe002, 0xe002) AM_DEVREADWRITE("tms9918", tms9918a_device, register_read, register_write)
- ADDRESS_MAP_END
- static ADDRESS_MAP_START(myvision_io, AS_IO, 8, myvision_state)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- // 0x00
- // 0x01
- // 0x02
- ADDRESS_MAP_END
- /* Input ports */
- static INPUT_PORTS_START( myvision )
- INPUT_PORTS_END
- void myvision_state::machine_reset()
- {
- }
- DEVICE_IMAGE_LOAD_MEMBER( myvision_state, cart )
- {
- UINT8 *cart = memregion("maincpu")->base();
- if (image.software_entry() == NULL)
- {
- UINT32 filesize = image.length();
- if (filesize != 0x4000 && filesize != 0x6000)
- {
- image.seterror(IMAGE_ERROR_UNSPECIFIED, "Incorrect or not support cartridge size");
- return IMAGE_INIT_FAIL;
- }
- if (image.fread( cart, filesize) != filesize)
- {
- image.seterror(IMAGE_ERROR_UNSPECIFIED, "Error loading file");
- return IMAGE_INIT_FAIL;
- }
- }
- else
- {
- memcpy(cart, image.get_software_region("rom"), image.get_software_region_length("rom"));
- }
- return IMAGE_INIT_PASS;
- }
- WRITE_LINE_MEMBER(myvision_state::vdp_interrupt)
- {
- m_maincpu->set_input_line(INPUT_LINE_IRQ0, state);
- }
- static TMS9928A_INTERFACE(myvision_tms9918a_interface)
- {
- 0x4000, /* Not verified */
- DEVCB_DRIVER_LINE_MEMBER(myvision_state,vdp_interrupt)
- };
- static MACHINE_CONFIG_START( myvision, myvision_state )
- /* basic machine hardware */
- MCFG_CPU_ADD("maincpu",Z80, XTAL_10_738635MHz/3) /* Not verified */
- MCFG_CPU_PROGRAM_MAP(myvision_mem)
- MCFG_CPU_IO_MAP(myvision_io)
- /* video hardware */
- MCFG_TMS9928A_ADD( "tms9918", TMS9918A, myvision_tms9918a_interface ) /* Exact model not verified */
- MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" )
- MCFG_SCREEN_UPDATE_DEVICE( "tms9918", tms9918a_device, screen_update )
- /* cartridge */
- MCFG_CARTSLOT_ADD("cart")
- MCFG_CARTSLOT_EXTENSION_LIST("bin")
- // MCFG_CARTSLOT_MANDATORY
- MCFG_CARTSLOT_NOT_MANDATORY
- MCFG_CARTSLOT_LOAD(myvision_state,cart)
- MCFG_CARTSLOT_INTERFACE("myvision_cart")
- /* software lists */
- MCFG_SOFTWARE_LIST_ADD("cart_list","myvision")
- MACHINE_CONFIG_END
- /* ROM definition */
- ROM_START( myvision )
- ROM_REGION( 0x6000, "maincpu", ROMREGION_ERASEFF )
- // For testing only should be removed before adding driver
- ROM_LOAD("rj1.bin", 0x0000, 0x2000, CRC(fa3df109) )
- ROM_LOAD("rj2.bin", 0x2000, 0x2000, CRC(eae282e3) )
- ROM_END
- /* Driver */
- /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
- COMP( 1983, myvision, 0, 0, myvision, myvision, driver_device, 0, "Nichibutsu", "My Vision (KH-1000)", GAME_NOT_WORKING | GAME_NO_SOUND)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement