mirror of
https://github.com/holub/mame
synced 2025-04-21 16:01:56 +03:00
was going to do some coleco stuff, but changed my mind
This commit is contained in:
parent
a8f50d7c66
commit
fa502fcfbd
@ -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 )
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user