was going to do some coleco stuff, but changed my mind

This commit is contained in:
Michaël Banaan Ananas 2014-01-20 10:54:25 +00:00
parent a8f50d7c66
commit fa502fcfbd
2 changed files with 29 additions and 24 deletions

View File

@ -2,7 +2,7 @@
coleco.c
Driver file to handle emulation of the Colecovision.
Driver file to handle emulation of the ColecoVision.
Marat Fayzullin (ColEm source)
Marcel de Kogel (AdamEm source)
@ -63,6 +63,7 @@
#include "includes/coleco.h"
/* Read/Write Handlers */
READ8_MEMBER( coleco_state::paddle_1_r )
@ -85,11 +86,12 @@ WRITE8_MEMBER( coleco_state::paddle_on_w )
m_joy_mode = 1;
}
/* Memory Maps */
static ADDRESS_MAP_START( coleco_map, AS_PROGRAM, 8, coleco_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x6000, 0x63ff) AM_RAM AM_MIRROR(0x1c00)
AM_RANGE(0x6000, 0x63ff) AM_RAM AM_MIRROR(0x1c00) AM_SHARE("ram")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@ -106,7 +108,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( czz50_map, AS_PROGRAM, 8, coleco_state )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x6000, 0x63ff) AM_RAM AM_MIRROR(0x1c00)
AM_RANGE(0x6000, 0x63ff) AM_RAM AM_MIRROR(0x1c00) AM_SHARE("ram")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@ -121,6 +123,7 @@ static ADDRESS_MAP_START( czz50_io_map, AS_IO, 8, coleco_state )
AM_RANGE(0xe2, 0xe2) AM_MIRROR(0x1d) AM_READ(paddle_2_r)
ADDRESS_MAP_END
/* Input Ports */
static INPUT_PORTS_START( czz50 )
@ -163,6 +166,7 @@ static INPUT_PORTS_START( czz50 )
PORT_BIT( 0xb0, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
/* Interrupts */
WRITE_LINE_MEMBER(coleco_state::coleco_vdp_interrupt)
@ -229,6 +233,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(coleco_state::paddle_update_callback)
}
}
/* Machine Initialization */
static TMS9928A_INTERFACE(coleco_tms9928a_interface)
@ -250,6 +255,8 @@ static const sn76496_config psg_intf =
void coleco_state::machine_start()
{
memset(m_ram, 0xff, m_ram.bytes()); // initialize RAM
// init paddles
for (int port = 0; port < 2; port++)
{
@ -273,10 +280,6 @@ void coleco_state::machine_start()
void coleco_state::machine_reset()
{
m_last_nmi_state = 0;
m_maincpu->set_input_line_vector(INPUT_LINE_IRQ0, 0xff);
memset(&memregion(Z80_TAG)->base()[0x6000], 0xff, 0x400); // initialize RAM
}
//static int coleco_cart_verify(const UINT8 *cartdata, size_t size)
@ -294,7 +297,7 @@ void coleco_state::machine_reset()
DEVICE_IMAGE_LOAD_MEMBER( coleco_state,czz50_cart )
{
UINT8 *ptr = memregion(Z80_TAG)->base() + 0x8000;
UINT8 *ptr = memregion("maincpu")->base() + 0x8000;
UINT32 size;
if (image.software_entry() == NULL)
@ -311,11 +314,12 @@ DEVICE_IMAGE_LOAD_MEMBER( coleco_state,czz50_cart )
}
}
/* Machine Drivers */
static MACHINE_CONFIG_START( coleco, coleco_state )
// basic machine hardware
MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_7_15909MHz/2) // 3.579545 MHz
MCFG_CPU_ADD("maincpu", Z80, XTAL_7_15909MHz/2) // 3.579545 MHz
MCFG_CPU_PROGRAM_MAP(coleco_map)
MCFG_CPU_IO_MAP(coleco_io_map)
@ -344,7 +348,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( czz50, coleco_state )
// basic machine hardware
MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_7_15909MHz/2) // ???
MCFG_CPU_ADD("maincpu", Z80, XTAL_7_15909MHz/2) // ???
MCFG_CPU_PROGRAM_MAP(czz50_map)
MCFG_CPU_IO_MAP(czz50_io_map)
@ -381,29 +385,30 @@ static MACHINE_CONFIG_DERIVED( dina, czz50 )
MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update )
MACHINE_CONFIG_END
/* ROMs */
ROM_START (coleco)
ROM_REGION( 0x10000, Z80_TAG, 0 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "coleco.rom", 0x0000, 0x2000, CRC(3aa93ef3) SHA1(45bedc4cbdeac66c7df59e9e599195c778d86a92) )
ROM_CART_LOAD("cart", 0x8000, 0x8000, ROM_NOMIRROR | ROM_OPTIONAL)
ROM_END
ROM_START (colecoa)
// differences to 0x3aa93ef3 modified characters, added a pad 2 related fix
ROM_REGION( 0x10000, Z80_TAG, 0 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "colecoa.rom", 0x0000, 0x2000, CRC(39bb16fc) SHA1(99ba9be24ada3e86e5c17aeecb7a2d68c5edfe59) )
ROM_CART_LOAD("cart", 0x8000, 0x8000, ROM_NOMIRROR | ROM_OPTIONAL)
ROM_END
ROM_START (colecob)
ROM_REGION( 0x10000, Z80_TAG, 0 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "svi603.rom", 0x0000, 0x2000, CRC(19e91b82) SHA1(8a30abe5ffef810b0f99b86db38b1b3c9d259b78) )
ROM_CART_LOAD("cart", 0x8000, 0x8000, ROM_NOMIRROR | ROM_OPTIONAL)
ROM_END
ROM_START( czz50 )
ROM_REGION( 0x10000, Z80_TAG, 0 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "czz50.rom", 0x0000, 0x2000, CRC(4999abc6) SHA1(96aecec3712c94517103d894405bc98a7dafa440) )
ROM_CONTINUE( 0x8000, 0x2000 )
ROM_END
@ -414,10 +419,10 @@ ROM_END
/* System Drivers */
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
CONS( 1982, coleco, 0, 0, coleco, coleco, driver_device, 0, "Coleco", "ColecoVision", 0 )
CONS( 1982, colecoa, coleco, 0, coleco, coleco, driver_device, 0, "Coleco", "ColecoVision (Thick Characters)", 0 )
CONS( 1983, colecob, coleco, 0, coleco, coleco, driver_device, 0, "Spectravideo", "SVI-603 Coleco Game Adapter", 0 )
CONS( 1986, czz50, 0, coleco, czz50, czz50, driver_device, 0, "Bit Corporation", "Chuang Zao Zhe 50", 0 )
CONS( 1988, dina, czz50, 0, dina, czz50, driver_device, 0, "Telegames", "Dina", 0 )
CONS( 1988, prsarcde, czz50, 0, czz50, czz50, driver_device, 0, "Telegames", "Personal Arcade", 0 )
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
CONS( 1982, coleco, 0, 0, coleco, coleco, driver_device, 0, "Coleco", "ColecoVision", 0 )
CONS( 1982, colecoa, coleco, 0, coleco, coleco, driver_device, 0, "Coleco", "ColecoVision (Thick Characters)", 0 )
CONS( 1983, colecob, coleco, 0, coleco, coleco, driver_device, 0, "Spectravideo", "SVI-603 Coleco Game Adapter", 0 )
CONS( 1986, czz50, 0, coleco, czz50, czz50, driver_device, 0, "Bit Corporation", "Chuang Zao Zhe 50", 0 )
CONS( 1988, dina, czz50, 0, dina, czz50, driver_device, 0, "Telegames", "Dina", 0 )
CONS( 1988, prsarcde, czz50, 0, czz50, czz50, driver_device, 0, "Telegames", "Personal Arcade", 0 )

View File

@ -11,17 +11,17 @@
#include "machine/coleco.h"
#include "imagedev/cartslot.h"
#define Z80_TAG "z80"
class coleco_state : public driver_device
{
public:
coleco_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, Z80_TAG)
m_maincpu(*this, "maincpu"),
m_ram(*this, "ram")
{ }
required_device<cpu_device> m_maincpu;
required_shared_ptr<UINT8> m_ram;
virtual void machine_start();
virtual void machine_reset();