diff options
Diffstat (limited to 'trunk/src/mame/drivers/rcorsair.c')
-rw-r--r-- | trunk/src/mame/drivers/rcorsair.c | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/trunk/src/mame/drivers/rcorsair.c b/trunk/src/mame/drivers/rcorsair.c new file mode 100644 index 00000000000..fe5a25a8293 --- /dev/null +++ b/trunk/src/mame/drivers/rcorsair.c @@ -0,0 +1,162 @@ +/* Red Corsair */ + +/* skeleton driver */ +/* This driver is not being worked on by the original author. + Somebody will probably need to do extensive research on the + PCB to establish what the custom block actually contains, + and how to extract it */ + + +/* Readme notes + +Red Corsair EPROM dump (dumped by Phil Morris) - notes follow: + +http://www.morris0.fsnet.co.uk + +The game itself involves you guiding a pirate around various obstacles and +picking up treasure. It's a top-down viewpoint. + +Relevant part of the display says: (c) Nakasawa 1984 + +There is one empty (EPROM?) socket, the rest are populated with 4 x +2764's and 1 x 2763 + +There are 2 x AY-3-8910 sound chips, 1 x 8255, 1 x HD46505SP video +chip (40-pin), and an 8085 CPU. + +The large metal enclosure in the middle is connected with 2 x 20-way +SILs and even when removed is resin coated. I'd guess this contains the main CPU +and no doubt some sort of protection (I don't really want to pull this apart +as it currently seems to be one of a kind). So I guess that limits the +possibilities of getting the code running under MAME? + +The EPROM dumps are named by the name on the labels, an underscore, then the +location on the PCB by column (number) then row (letter). + +The two PROMs are both AM27S21DC (ie 256 x 4) + +*/ + +/* + +Driver Notes: + +Can't do much with this, I'm pretty sure the game code is in the custom block +so even the Main CPU is unknown, assuming the 8085 is the sound CPU + +*/ + +#include "emu.h" +#include "cpu/i8085/i8085.h" + + +class rcorsair_state : public driver_device +{ +public: + rcorsair_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) { } + +}; + + +static ADDRESS_MAP_START( rcorsair_map, AS_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x1fff) AM_ROM +ADDRESS_MAP_END + +static INPUT_PORTS_START( inports ) + PORT_START("IN0") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +INPUT_PORTS_END + +static const gfx_layout tiles8x8_layout = +{ + 8,8, + RGN_FRAC(1,3), + 3, + { RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(2,3) }, + { 0, 1, 2, 3, 4, 5, 6, 7 }, + { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, + 8*8 +}; + +static GFXDECODE_START( rcorsair ) + GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 16 ) +GFXDECODE_END + +static VIDEO_START( rcorsair ) +{ +} + +static SCREEN_UPDATE( rcorsair ) +{ + + return 0; +} + +static MACHINE_CONFIG_START( rcorsair, rcorsair_state ) + + /* Main CPU is probably inside Custom Block with + program code, unknown type */ + + MCFG_CPU_ADD("maincpu", I8085A,8000000) /* Sound CPU? */ + MCFG_CPU_PROGRAM_MAP(rcorsair_map) +// MCFG_CPU_VBLANK_INT("screen", irq0_line_hold) + + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MCFG_SCREEN_SIZE(256, 256) + MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1) + MCFG_SCREEN_UPDATE(rcorsair) + + MCFG_GFXDECODE(rcorsair) + MCFG_PALETTE_LENGTH(0x100) + + MCFG_VIDEO_START(rcorsair) +MACHINE_CONFIG_END + +ROM_START( rcorsair ) + ROM_REGION( 0x2000, "maincpu", 0 ) + ROM_LOAD( "rcs_6d.bin", 0x00000, 0x2000, CRC(b7f34f91) SHA1(16d5ed6a60db09f04727be8500c1c8c869281a8a) ) // sound code? (or part of the game code?) + + ROM_REGION( 0x2000, "cpu1", 0 ) + ROM_LOAD( "custom_block", 0x00000, 0x2000, NO_DUMP ) // assume it is CPU, could be wrong, it needs investigating anyway + + ROM_REGION( 0x6000, "gfx1", 0 ) /* there looks to be a slight scramble per tile, probably simle address xor */ + ROM_LOAD( "rcd2_2b.bin", 0x0000, 0x2000, CRC(d52b39f1) SHA1(20ce812fb4a9157d7c1d45902645695f0dd84add) ) + ROM_LOAD( "rcd1_2c.bin", 0x2000, 0x2000, CRC(9ec5dd51) SHA1(84939799f64d9d3e9a67b51046dd0c3403904d97) ) + ROM_LOAD( "rcd0_2d.bin", 0x4000, 0x2000, CRC(b86fe547) SHA1(30dc51f65d2bd807d2498829087ba1a8eaa2e146) ) + + ROM_REGION( 0x2000, "user1", 0 ) + ROM_LOAD( "red47_2r.bin", 0x00000, 0x2000, CRC(25ae59c2) SHA1(ee68faeba81e1c426184532bd736be574a08f7d4) ) // ? sound code/data? game data? + + ROM_REGION( 0x40000, "proms", 0 ) + ROM_LOAD( "prom_3d.bin", 0x00000, 0x100, CRC(fd8bc85b) SHA1(79324a6cecea652bc920ec762e7a30044003ed3f) ) // ? + ROM_LOAD( "prom_3c.bin", 0x00000, 0x100, CRC(edca1d4a) SHA1(a5ff659cffcd09cc161960da8f5cdd234e0db92c) ) // ? +ROM_END + +GAME( 1984, rcorsair, 0, rcorsair, inports, 0, ROT90, "Nakasawa", "Red Corsair", GAME_NOT_WORKING | GAME_NO_SOUND ) |