summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author davidhay <davidhay@localhost>2008-07-02 07:24:44 +0000
committer davidhay <davidhay@localhost>2008-07-02 07:24:44 +0000
commit13b76be0246254bddc59608baa9cfcab0cae2dac (patch)
tree5358779f78898d56a15876e00b5878a1522df791 /src
parentadf97b999c8b77dc75468a41d79619a933a8a618 (diff)
adds starfora (non-working)
this needs a different decrypt functino. I'll see if it works with any of the existing ones. New clones added ---------------- Star Force (encrypted, set 2) [highwayman] (NOT WORKING)
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/senjyo.c119
-rw-r--r--src/mame/mamedriv.c1
-rw-r--r--src/mame/video/senjyo.c28
3 files changed, 95 insertions, 53 deletions
diff --git a/src/mame/drivers/senjyo.c b/src/mame/drivers/senjyo.c
index 9e0bb9eb93c..5b825825318 100644
--- a/src/mame/drivers/senjyo.c
+++ b/src/mame/drivers/senjyo.c
@@ -74,6 +74,7 @@ I/O read/write
#include "sound/sn76496.h"
#include "sound/samples.h"
#include "cpu/z80/z80daisy.h"
+#include "machine/segacrpt.h"
@@ -92,12 +93,9 @@ WRITE8_HANDLER( senjyo_bg2videoram_w );
WRITE8_HANDLER( senjyo_bg3videoram_w );
WRITE8_HANDLER( senjyo_bgstripes_w );
-DRIVER_INIT( starforc );
-DRIVER_INIT( starfore );
-DRIVER_INIT( senjyo );
-
VIDEO_START( senjyo );
VIDEO_UPDATE( senjyo );
+extern int is_senjyo, senjyo_scrollhack;
void senjyo_sh_start(void);
@@ -108,9 +106,8 @@ WRITE8_HANDLER( senjyo_sh_2_w );
WRITE8_HANDLER( starforc_pio_w );
READ8_HANDLER( starforc_pio_r );
-#if 1
WRITE8_HANDLER( senjyo_volume_w );
-#endif
+
@@ -568,43 +565,32 @@ INPUT_PORTS_END
static const gfx_layout charlayout =
{
8,8, /* 8*8 characters */
- 512, /* 512 characters */
+ RGN_FRAC(1,3), /* 512 characters */
3, /* 3 bits per pixel */
- { 0, 512*8*8, 2*512*8*8 }, /* the bitplanes are separated */
+ { RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(2,3) }, /* the bitplanes are separated */
{ 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 /* every char takes 8 consecutive bytes */
};
-static const gfx_layout tilelayout_256 =
-{
- 16,16, /* 16*16 characters */
- 256, /* 256 characters */
- 3, /* 3 bits per pixel */
- { 0, 256*16*16, 2*256*16*16 }, /* the bitplanes are separated */
- { 0, 1, 2, 3, 4, 5, 6, 7,
- 8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
- 16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
- 32*8 /* every character takes 32 consecutive bytes */
-};
-static const gfx_layout tilelayout_128 =
+static const gfx_layout tilelayout =
{
16,16, /* 16*16 characters */
- 128, /* 128 characters */
+ RGN_FRAC(1,3), /* 256 characters */
3, /* 3 bits per pixel */
- { 0, 128*16*16, 2*128*16*16 }, /* the bitplanes are separated */
+ { RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(2,3) }, /* the bitplanes are separated */
{ 0, 1, 2, 3, 4, 5, 6, 7,
8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
32*8 /* every character takes 32 consecutive bytes */
};
+
static const gfx_layout spritelayout1 =
{
16,16, /* 16*16 sprites */
- 512, /* 512 sprites */
+ RGN_FRAC(1,3),
3, /* 3 bits per pixel */
- { 0, 512*16*16, 2*512*16*16 }, /* the bitplanes are separated */
+ { RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(2,3) }, /* the bitplanes are separated */
{ 0, 1, 2, 3, 4, 5, 6, 7,
8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
@@ -614,9 +600,9 @@ static const gfx_layout spritelayout1 =
static const gfx_layout spritelayout2 =
{
32,32, /* 32*32 sprites */
- 128, /* 128 sprites */
+ RGN_FRAC(1,3), /* 128 sprites */
3, /* 3 bits per pixel */
- { 0, 128*32*32, 2*128*32*32 }, /* the bitplanes are separated */
+ { RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(2,3) }, /* the bitplanes are separated */
{ 0, 1, 2, 3, 4, 5, 6, 7,
8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7,
32*8+0, 32*8+1, 32*8+2, 32*8+3, 32*8+4, 32*8+5, 32*8+6, 32*8+7,
@@ -630,9 +616,9 @@ static const gfx_layout spritelayout2 =
static GFXDECODE_START( senjyo )
GFXDECODE_ENTRY( REGION_GFX1, 0, charlayout, 0, 8 ) /* 0- 63 characters */
- GFXDECODE_ENTRY( REGION_GFX2, 0, tilelayout_256, 64, 8 ) /* 64-127 background #1 */
- GFXDECODE_ENTRY( REGION_GFX3, 0, tilelayout_256, 128, 8 ) /* 128-191 background #2 */
- GFXDECODE_ENTRY( REGION_GFX4, 0, tilelayout_128, 192, 8 ) /* 192-255 background #3 */
+ GFXDECODE_ENTRY( REGION_GFX2, 0, tilelayout, 64, 8 ) /* 64-127 background #1 */
+ GFXDECODE_ENTRY( REGION_GFX3, 0, tilelayout, 128, 8 ) /* 128-191 background #2 */
+ GFXDECODE_ENTRY( REGION_GFX4, 0, tilelayout, 192, 8 ) /* 192-255 background #3 */
GFXDECODE_ENTRY( REGION_GFX5, 0, spritelayout1, 320, 8 ) /* 320-383 normal sprites */
GFXDECODE_ENTRY( REGION_GFX5, 0, spritelayout2, 320, 8 ) /* 320-383 large sprites */
/* 384-399 is background */
@@ -844,6 +830,49 @@ ROM_START( starforb )
ROM_END
+ROM_START( starfora )
+ ROM_REGION( 0x10000, REGION_CPU1, 0 )
+ ROM_LOAD( "5.bin", 0x0000, 0x2000, CRC(7691bbd4) SHA1(efcab11ea0ed58b6a47c9d7a994c921dfaa1b47e) )
+ ROM_LOAD( "4.bin", 0x2000, 0x2000, CRC(32f3c34e) SHA1(9ecaa46fe296c2f2e9c8faf3d40085c0f10acbe1) )
+ ROM_LOAD( "3.bin", 0x4000, 0x2000, CRC(5e99cfa0) SHA1(d16d5247f4afb7abb5b8331ad7ae9d4d1f6d6554) )
+ ROM_LOAD( "2.bin", 0x6000, 0x2000, CRC(311c6e59) SHA1(ff3ba96ffade7602d3b150dae4bdc1c02a148576) )
+
+ ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for sound board */
+ ROM_LOAD( "0.bin", 0x0000, 0x2000, CRC(a277c268) SHA1(99ed8439119fa4b850ad8aadb7ff3e54d4cd40be) )
+
+ ROM_REGION( 0x03000, REGION_GFX1, ROMREGION_DISPOSE )
+ ROM_LOAD( "8.bin", 0x00000, 0x1000, CRC(f4803339) SHA1(a119d68c2dd1c0e191231ce77353b31f30f7aa76) ) /* fg */
+ ROM_LOAD( "7.bin", 0x01000, 0x1000, CRC(96979684) SHA1(bb4f7d3afc8dfaa723dfb5374996cc4bfd76fa3c) )
+ ROM_LOAD( "6.bin", 0x02000, 0x1000, CRC(eead1d5c) SHA1(7c9165ed227c5228122b494a265cbfd6e843ba61) )
+
+ ROM_REGION( 0x06000, REGION_GFX2, ROMREGION_DISPOSE )
+ ROM_LOAD( "17.bin", 0x00000, 0x2000, CRC(c3bda12f) SHA1(3748ea8e34222a31a365a02ec77430f268b0b397) ) /* bg1 */
+ ROM_LOAD( "16.bin", 0x02000, 0x2000, CRC(9e9384fe) SHA1(3aaa9cc64ef3775325f64733da4f6c328abf6514) )
+ ROM_LOAD( "15.bin", 0x04000, 0x2000, CRC(84603285) SHA1(f4d6dfa3968fbd8ebf1a6451d5ea1821d65d9b49) )
+
+ ROM_REGION( 0x06000, REGION_GFX3, ROMREGION_DISPOSE )
+ ROM_LOAD( "20.bin", 0x00000, 0x2000, CRC(fdd9e38b) SHA1(3766835d9e9fc7e5dd99521e7303562029b78a65) ) /* bg2 */
+ ROM_LOAD( "19.bin", 0x02000, 0x2000, CRC(668aea14) SHA1(62eb0df48f2f0c5778bb230cc3bf0b8eb3b4e3f8) )
+ ROM_LOAD( "18.bin", 0x04000, 0x2000, CRC(c62a19c1) SHA1(9ce0e29630d3c8cba4db4cff333b250481348968) )
+
+ ROM_REGION( 0x06000, REGION_GFX4, ROMREGION_DISPOSE ) // twice the size of other sets, but 2nd half is just blank
+ ROM_LOAD( "sw5.bin", 0x00000, 0x2000, CRC(ce6bbc11) SHA1(c8f4b22f5ac1c95fff7758c67bf8c39452f5945b) ) /* bg3 */
+ ROM_LOAD( "sw4.bin", 0x02000, 0x2000, CRC(f5b4b629) SHA1(d777a144e6dea63f2c3dcd25e32525aa185367ee) )
+ ROM_LOAD( "sw3.bin", 0x04000, 0x2000, CRC(0965346d) SHA1(20b223a6aef8dc9c37ab45c575864bce1e9e50db) )
+
+ ROM_REGION( 0x0c000, REGION_GFX5, ROMREGION_DISPOSE )
+ ROM_LOAD( "13.bin", 0x00000, 0x2000, CRC(1cfc88a8) SHA1(2948864ed88ba3b1d500047e2ef594b67274710c) ) /* sprites */
+ ROM_LOAD( "14.bin", 0x02000, 0x2000, CRC(902060b4) SHA1(f371aa12ba3f554918e8a482114df166cd007b0e) ) /* sprites */
+ ROM_LOAD( "11.bin", 0x04000, 0x2000, CRC(7676b970) SHA1(f5fcee4ca555e7c880c6bf5d5ea01ff8d619a837) )
+ ROM_LOAD( "12.bin", 0x06000, 0x2000, CRC(6f4a5d67) SHA1(182be475dfee4d272f57c030e3acd4e8cfa4fc53) )
+ ROM_LOAD( "9.bin", 0x08000, 0x2000, CRC(e7d51959) SHA1(34d9afb0f31dc1d02e7b85aa69345fc66cf0f554) )
+ ROM_LOAD( "10.bin", 0x0a000, 0x2000, CRC(6ea27bec) SHA1(30da81a99d5920107751afda359576e426c497c4) )
+
+ ROM_REGION( 0x0020, REGION_PROMS, 0 ) /* PROMs */
+ ROM_LOAD( "prom.bin", 0x0000, 0x0020, CRC(68db8300) SHA1(33cd6b5ed92d7b73a708f2e4b12b6e7f6496d0c6) ) /* unknown - timing? */
+ROM_END
+
+
ROM_START( starfore )
ROM_REGION( 2*0x10000, REGION_CPU1, 0 ) /* 64k for code + 64k for decrypted opcodes */
ROM_LOAD( "starfore.005", 0x0000, 0x2000, CRC(825f7ebe) SHA1(d63fd516e075bcc28d42189216b95bbf491a4cd1) )
@@ -958,10 +987,40 @@ ROM_START( baluba )
ROM_END
+DRIVER_INIT( starforc )
+{
+ is_senjyo = 0;
+ senjyo_scrollhack = 1;
+}
+DRIVER_INIT( starfore )
+{
+ /* encrypted CPU */
+ suprloco_decode(machine);
+
+ is_senjyo = 0;
+ senjyo_scrollhack = 0;
+}
+
+DRIVER_INIT( starfora )
+{
+ /* encrypted CPU */
+ //suprloco_decode(machine); // wrong
+
+ is_senjyo = 0;
+ senjyo_scrollhack = 0;
+}
+
+DRIVER_INIT( senjyo )
+{
+ is_senjyo = 1;
+ senjyo_scrollhack = 0;
+}
+
GAME( 1983, senjyo, 0, senjyo, senjyo, senjyo, ROT90, "Tehkan", "Senjyo", 0 )
GAME( 1984, starforc, 0, senjyo, starforc, starforc, ROT90, "Tehkan", "Star Force", 0 )
GAME( 1984, starfore, starforc, senjyo, starforc, starfore, ROT90, "Tehkan", "Star Force (encrypted)", 0 )
GAME( 1984, starforb, starforc, starforb,starforc, starfore, ROT90, "[Tehkan] (bootleg)", "Star Force (encrypted, bootleg)", 0 )
+GAME( 1984, starfora, starforc, starforb,starforc, starfora, ROT90, "Tehkan", "Star Force (encrypted, set 2)", GAME_NOT_WORKING ) // another bootleg?
GAME( 1985, megaforc, starforc, senjyo, starforc, starforc, ROT90, "Tehkan (Video Ware license)", "Mega Force", 0 )
GAME( 1986, baluba, 0, senjyo, baluba, starforc, ROT90, "Able Corp, Ltd.", "Baluba-louk no Densetsu", GAME_IMPERFECT_COLORS )
diff --git a/src/mame/mamedriv.c b/src/mame/mamedriv.c
index b89ba32ddf5..d9668ffbbf7 100644
--- a/src/mame/mamedriv.c
+++ b/src/mame/mamedriv.c
@@ -4398,6 +4398,7 @@ BOMULEUL CHAJARA SEGA ST-V 1997/04/11
DRIVER( starforc ) /* (c) 1984 Tehkan */
DRIVER( starfore ) /* (c) 1984 Tehkan */
DRIVER( starforb ) /* (c) 1984 Tehkan */
+ DRIVER( starfora ) /* (c) 1984 Tehkan */
DRIVER( megaforc ) /* (c) 1985 Tehkan + Video Ware license */
DRIVER( baluba ) /* (c) 1986 Able Corp. */
DRIVER( bombjack ) /* (c) 1984 Tehkan */
diff --git a/src/mame/video/senjyo.c b/src/mame/video/senjyo.c
index 525715a883e..427e93cb8af 100644
--- a/src/mame/video/senjyo.c
+++ b/src/mame/video/senjyo.c
@@ -20,28 +20,10 @@ UINT8 *senjyo_bgstripesram;
static tilemap *fg_tilemap,*bg1_tilemap,*bg2_tilemap,*bg3_tilemap;
-static int senjyo, scrollhack;
+int is_senjyo, senjyo_scrollhack;
static int senjyo_bgstripes;
-DRIVER_INIT( starforc )
-{
- senjyo = 0;
- scrollhack = 1;
-}
-DRIVER_INIT( starfore )
-{
- /* encrypted CPU */
- suprloco_decode(machine);
-
- senjyo = 0;
- scrollhack = 0;
-}
-DRIVER_INIT( senjyo )
-{
- senjyo = 1;
- scrollhack = 0;
-}
/***************************************************************************
@@ -55,7 +37,7 @@ static TILE_GET_INFO( get_fg_tile_info )
UINT8 attr = senjyo_fgcolorram[tile_index];
int flags = (attr & 0x80) ? TILE_FLIPY : 0;
- if (senjyo && (tile_index & 0x1f) >= 32-8)
+ if (is_senjyo && (tile_index & 0x1f) >= 32-8)
flags |= TILE_FORCE_LAYER0;
SET_TILE_INFO(
@@ -120,7 +102,7 @@ VIDEO_START( senjyo )
{
fg_tilemap = tilemap_create(get_fg_tile_info,tilemap_scan_rows,8,8,32,32);
- if (senjyo)
+ if (is_senjyo)
{
bg1_tilemap = tilemap_create(senjyo_bg1_tile_info,tilemap_scan_rows,16,16,16,32);
bg2_tilemap = tilemap_create(get_bg2_tile_info, tilemap_scan_rows,16,16,16,48); /* only 16x32 used by Star Force */
@@ -255,7 +237,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectan
if (((spriteram[offs+1] & 0x30) >> 4) == priority)
{
- if (senjyo) /* Senjyo */
+ if (is_senjyo) /* Senjyo */
big = (spriteram[offs] & 0x80);
else /* Star Force */
big = ((spriteram[offs] & 0xc0) == 0xc0);
@@ -319,7 +301,7 @@ VIDEO_UPDATE( senjyo )
scrollx = senjyo_scrollx2[0];
scrolly = senjyo_scrolly2[0] + 256 * senjyo_scrolly2[1];
- if (scrollhack) /* Star Force, but NOT the encrypted version */
+ if (senjyo_scrollhack) /* Star Force, but NOT the encrypted version */
{
scrollx = senjyo_scrollx1[0];
scrolly = senjyo_scrolly1[0] + 256 * senjyo_scrolly1[1];