summaryrefslogtreecommitdiffstatshomepage
path: root/trunk/src/mame/drivers/rcorsair.c
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/mame/drivers/rcorsair.c')
-rw-r--r--trunk/src/mame/drivers/rcorsair.c162
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 )