diff --git a/src/mame/drivers/goldstar.c b/src/mame/drivers/goldstar.c index 7d7c54e718b..848ce8f662a 100644 --- a/src/mame/drivers/goldstar.c +++ b/src/mame/drivers/goldstar.c @@ -12,6 +12,9 @@ Driver by Mirko Buffoni. Additional Work: David Haywood & Roberto Fresca. + The vast majority of the sets in here are probably bootlegs and hacks + hence the slightly different PCBs, rom layouts, slightly hacked program roms + etc. **************************************************************************** @@ -195,7 +198,7 @@ static WRITE8_HANDLER( ncb3_port81_w ) // popmessage("ncb3_port81_w %02x\n",data); } -// where is colour bank for 'all blue' in attract? + static ADDRESS_MAP_START( ncb3_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0xb7ff) AM_ROM AM_RANGE(0xb800, 0xbfff) AM_RAM AM_BASE(&nvram) AM_SIZE(&nvram_size) @@ -211,7 +214,9 @@ static ADDRESS_MAP_START( ncb3_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0xf800, 0xf803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w) /* Input Ports */ AM_RANGE(0xf810, 0xf813) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w) /* Input Ports */ + AM_RANGE(0xf822, 0xf822) AM_WRITE(goldstar_fa00_w) // hack (connected to ppi output port?, needed for colour banking) AM_RANGE(0xf820, 0xf823) AM_DEVREADWRITE("ppi8255_2", ppi8255_r, ppi8255_w) /* Input/Output Ports */ + AM_RANGE(0xf830, 0xf830) AM_DEVREADWRITE("ay", ay8910_r, ay8910_data_w) AM_RANGE(0xf840, 0xf840) AM_DEVWRITE("ay", ay8910_address_w) // AM_RANGE(0xf850, 0xf850) AM_WRITE(ncb3_p1_flip_w) // need flip? @@ -449,6 +454,15 @@ static ADDRESS_MAP_START( ladylinr_map, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_END +static ADDRESS_MAP_START( unkch_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x9fff) AM_ROM + AM_RANGE(0xc000, 0xc1ff) AM_READWRITE(SMH_RAM,paletteram_xBBBBBGGGGGRRRRR_split1_w) AM_BASE(&paletteram) + AM_RANGE(0xc800, 0xc9ff) AM_READWRITE(SMH_RAM,paletteram_xBBBBBGGGGGRRRRR_split2_w) AM_BASE(&paletteram_2) + AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_BASE(&nvram) AM_SIZE(&nvram_size) + AM_RANGE(0xe000, 0xffff) AM_RAM +ADDRESS_MAP_END + + static INPUT_PORTS_START( cmv801 ) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -4193,6 +4207,62 @@ static GFXDECODE_START( nfm ) GFXDECODE_ENTRY( "reelgfx", 0, tiles8x32_4bpp_layout, 0, 16 ) GFXDECODE_END +static const gfx_layout tiles8x8x3_miss1bpp_layout = +{ + 8,8, + RGN_FRAC(1,1), + 3, + { 1,2,3 }, + { 8,12,0,4,24,28,16,20 }, + { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, + 8*32 +}; + +static const gfx_layout tiles8x8x4alt_layout = +{ + 8,8, + RGN_FRAC(1,1), + 4, + { 0, 1,2,3 }, + { 4,0,12,8,20,16,28,24 }, + { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, + 8*32 +}; + +static const gfx_layout tiles8x32x4alt2_layout = +{ + 8,32, + RGN_FRAC(1,1), + 4, + { 0, 1,2,3 }, + { 4,0,12,8,20,16,28,24 }, + { STEP32(0,32) }, + 32*32 +}; + + +static GFXDECODE_START( unkch ) + GFXDECODE_ENTRY( "gfx1", 0, tiles8x8x4alt_layout, 0, 16 ) + GFXDECODE_ENTRY( "gfx2", 0, tiles8x32x4alt2_layout, 128, 8 ) +GFXDECODE_END + +static const gfx_layout tilescherrys_layout = +{ + 8,32, + RGN_FRAC(1,1), + 4, + { 3,2,1,0 }, + { 8,12,0,4,24,28,16,20 }, + { STEP32(0,32) }, + 32*32 +}; + +static GFXDECODE_START(cherrys ) + GFXDECODE_ENTRY( "gfx1", 0, tiles8x8x3_miss1bpp_layout, 0, 16 ) + GFXDECODE_ENTRY( "gfx2", 0, tilescherrys_layout, 128, 8 ) +GFXDECODE_END + + /************************************* * PPI 8255 (x3) Interfaces * @@ -4999,6 +5069,56 @@ static MACHINE_DRIVER_START( nfm ) MACHINE_DRIVER_END +VIDEO_START( unkch ) +{ + +} + +VIDEO_UPDATE( unkch ) +{ + return 0; +} + +static MACHINE_DRIVER_START( unkch ) + + /* basic machine hardware */ + MDRV_CPU_ADD("maincpu", Z80, CPU_CLOCK) + MDRV_CPU_PROGRAM_MAP(unkch_map) + //MDRV_CPU_IO_MAP(ncb3_readwriteport) + //MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse) + MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) + + /* video hardware */ + MDRV_SCREEN_ADD("screen", RASTER) + MDRV_SCREEN_REFRESH_RATE(60) +// MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(64*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) + + MDRV_GFXDECODE(unkch) + MDRV_PALETTE_LENGTH(512) + + //MDRV_NVRAM_HANDLER(goldstar) + + MDRV_VIDEO_START(unkch) + MDRV_VIDEO_UPDATE(unkch) + + /* sound hardware */ + MDRV_SPEAKER_STANDARD_MONO("mono") + + MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK) + MDRV_SOUND_CONFIG(ay8910_config) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) +MACHINE_DRIVER_END + +static MACHINE_DRIVER_START( cherrys ) + + MDRV_IMPORT_FROM(ncb3) + MDRV_GFXDECODE(cherrys) + +MACHINE_DRIVER_END + /*************************************************************************** Game driver(s) @@ -5257,6 +5377,28 @@ ROM_START( cb3a ) ROM_END +ROM_START( cb3b ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "adatabin.bin", 0x00000, 0x10000, CRC(db583c1b) SHA1(ea733e625922d6064ee4d8ceee4acfa6c1c7337e) ) + + ROM_REGION( 0x20000, "gfx1", ROMREGION_DISPOSE ) + ROM_LOAD( "adatabin_2.bin", 0x00000, 0x10000, CRC(48fd96fb) SHA1(193ed2be51555af80a9f0478139f28963e9d0c5e) ) + ROM_LOAD( "adatabin_3.bin", 0x10000, 0x10000, CRC(010462df) SHA1(53dd3060097f964c516d1cc5be2403a9bd5ee434) ) + + ROM_REGION( 0x08000, "gfx2", ROMREGION_DISPOSE ) + ROM_LOAD( "adatabin_4.bin", 0x00000, 0x08000, CRC(3cb4642a) SHA1(8db03c0227836d988e99f6fe4719d871ea3749ca) ) + + ROM_REGION( 0x0200, "proms", ROMREGION_DISPOSE ) /* PROM from chrygld - wasn't in this set, is it correct?, none of the other proms have the colours? */ + ROM_LOAD( "82s147.u2", 0x00000, 0x0200, BAD_DUMP CRC(5c8f2b8f) SHA1(67d2121e75813dd85d83858c5fc5ec6ad9cc2a7d) ) + + ROM_REGION( 0x0200, "proms2", ROMREGION_DISPOSE ) /* other roms */ + ROM_LOAD( "adatabin_1.bin", 0x00000, 0x020, CRC(87dbc339) SHA1(e5c67bc29612c8ab93857639e46608a814d471f5) ) + ROM_LOAD( "adatabin_5.bin", 0x00000, 0x180, CRC(ad267b0c) SHA1(a4cfec15ae0cde7d4fb8c278e977995680779058) ) + ROM_LOAD( "adatabin_6.bin", 0x00000, 0x010, CRC(f3d9ed7a) SHA1(594fef6323530f68c7303dcdea77b44c331e5113) ) + ROM_LOAD( "adatabin_0.bin", 0x00000, 0x100, CRC(f566e5e0) SHA1(754f04521b9eb73b34fe3de07e8f3679d1034870) ) +ROM_END + + ROM_START( cmv801 ) ROM_REGION( 0x10000, "maincpu", 0 ) @@ -7090,6 +7232,52 @@ ROM_START( nfm ) ROM_END + +ROM_START( unkch1 ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "u6.bin", 0x0000, 0x10000, CRC(30309996) SHA1(290f35f587fdf78dcb4f09403c510deec533c9c2) ) + + ROM_REGION( 0x20000, "gfx1", 0 ) + ROM_LOAD( "u29.bin", 0x00000, 0x20000, CRC(6db245a1) SHA1(e9f85ba29b0af483eae6f999f49f1e431d9d2e27) ) + + ROM_REGION( 0x40000, "gfx2", 0 ) + ROM_LOAD( "u41.bin", 0x00000, 0x40000, CRC(b2bca15d) SHA1(57747c9c05e5ab54e40cbded2e420dfbfc929ce5) ) +ROM_END + +ROM_START( unkch2 ) // only gfx2 differs from unkch1 + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "u6.bin", 0x0000, 0x10000, CRC(30309996) SHA1(290f35f587fdf78dcb4f09403c510deec533c9c2) ) + + ROM_REGION( 0x20000, "gfx1", 0 ) + ROM_LOAD( "u29.bin", 0x00000, 0x20000, CRC(6db245a1) SHA1(e9f85ba29b0af483eae6f999f49f1e431d9d2e27) ) + + ROM_REGION( 0x40000, "gfx2", 0 ) + ROM_LOAD( "u41.1", 0x00000, 0x40000, CRC(725b48c7) SHA1(2f21c33fb7d23ad9411e926130a65b75029b9112) ) +ROM_END + +ROM_START( unkch3 ) // gfx2 is the same as unkch1, others differ + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "u6.3", 0x0000, 0x10000, CRC(902f9e42) SHA1(ac5843089748d457f70ea52d15285a0ccda705ad) ) + + ROM_REGION( 0x20000, "gfx1", 0 ) + ROM_LOAD( "u29.3", 0x00000, 0x20000, CRC(546929e6) SHA1(f97fe5687f8776f0abe68962a0246c9bbeb6acd1) ) + + ROM_REGION( 0x40000, "gfx2", 0 ) + ROM_LOAD( "u41.bin", 0x00000, 0x40000, CRC(b2bca15d) SHA1(57747c9c05e5ab54e40cbded2e420dfbfc929ce5) ) +ROM_END + +ROM_START( unkch4 ) // all roms unique + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "u6.4", 0x0000, 0x10000, CRC(eb191efa) SHA1(3004f26f9af7633df572f609647716cc4ac75990) ) + + ROM_REGION( 0x20000, "gfx1", 0 ) + ROM_LOAD( "u29.4", 0x00000, 0x20000, CRC(eaec0034) SHA1(6b2d3922873979eafcd4c71c52017263482b82ab) ) + + ROM_REGION( 0x40000, "gfx2", 0 ) + ROM_LOAD( "u41.4", 0x00000, 0x40000, CRC(ef586512) SHA1(a720e40903dd04b2c498efad40d583618596e048) ) +ROM_END + + static DRIVER_INIT(goldstar) { int A; @@ -7667,7 +7855,42 @@ static DRIVER_INIT( match133 ) memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x1a, 0x1a, 0, 0, fixedvale4_r); } +DRIVER_INIT(cherrys) +{ + int i; + UINT8 *ROM = memory_region(machine, "maincpu"); + unsigned char rawData[256] = { + 0xCC, 0xCD, 0xCE, 0xCF, 0xC8, 0xC9, 0xCA, 0xCB, 0xC4, 0xC5, 0xC6, 0xC7, + 0xC0, 0xC1, 0xC2, 0xC3, 0xDC, 0xDD, 0xDE, 0xDF, 0xD8, 0xD9, 0xDA, 0xDB, + 0xD4, 0xD5, 0xD6, 0xD7, 0xD0, 0xD1, 0xD2, 0xD3, 0xEC, 0xED, 0xEE, 0xEF, + 0xE8, 0xE9, 0xEA, 0xEB, 0xE4, 0xE5, 0xE6, 0xE7, 0xE0, 0xE1, 0xE2, 0xE3, + 0xFC, 0xFD, 0xFE, 0xFF, 0xF8, 0xF9, 0xFA, 0xFB, 0xF4, 0xF5, 0xF6, 0xF7, + 0xF0, 0xF1, 0xF2, 0xF3, 0x8C, 0x8D, 0x8E, 0x8F, 0x88, 0x89, 0x8A, 0x8B, + 0x84, 0x85, 0x86, 0x87, 0x80, 0x81, 0x82, 0x83, 0x9C, 0x9D, 0x9E, 0x9F, + 0x98, 0x99, 0x9A, 0x9B, 0x94, 0x95, 0x96, 0x97, 0x90, 0x91, 0x92, 0x93, + 0xAC, 0xAD, 0xAE, 0xAF, 0xA8, 0xA9, 0xAA, 0xAB, 0xA4, 0xA5, 0xA6, 0xA7, + 0xA0, 0xA1, 0xA2, 0xA3, 0xBC, 0xBD, 0xBE, 0xBF, 0xB8, 0xB9, 0xBA, 0xBB, + 0xB4, 0xB5, 0xB6, 0xB7, 0xB0, 0xB1, 0xB2, 0xB3, 0x4C, 0x4D, 0x4E, 0x4F, + 0x48, 0x49, 0x4A, 0x4B, 0x44, 0x45, 0x46, 0x47, 0x40, 0x41, 0x42, 0x43, + 0x5C, 0x5D, 0x5E, 0x5F, 0x58, 0x59, 0x5A, 0x5B, 0x54, 0x55, 0x56, 0x57, + 0x50, 0x51, 0x52, 0x53, 0x6C, 0x6D, 0x6E, 0x6F, 0x68, 0x69, 0x6A, 0x6B, + 0x64, 0x65, 0x66, 0x67, 0x60, 0x61, 0x62, 0x63, 0x7C, 0x7D, 0x7E, 0x7F, + 0x78, 0x79, 0x7A, 0x7B, 0x74, 0x75, 0x76, 0x77, 0x70, 0x71, 0x72, 0x73, + 0x0C, 0x0D, 0x0E, 0x0F, 0x08, 0x09, 0x0A, 0x0B, 0x04, 0x05, 0x06, 0x07, + 0x00, 0x01, 0x02, 0x03, 0x1C, 0x1D, 0x1E, 0x1F, 0x18, 0x19, 0x1A, 0x1B, + 0x14, 0x15, 0x16, 0x17, 0x10, 0x11, 0x12, 0x13, 0x2C, 0x2D, 0x2E, 0x2F, + 0x28, 0x29, 0x2A, 0x2B, 0x24, 0x25, 0x26, 0x27, 0x20, 0x21, 0x22, 0x23, + 0x3C, 0x3D, 0x3E, 0x3F, 0x38, 0x39, 0x3A, 0x3B, 0x34, 0x35, 0x36, 0x37, + 0x30, 0x31, 0x32, 0x33 + }; + + for (i = 0;i < 0x10000;i++) + { + ROM[i] = ROM[i] ^ rawData[i&0xff]; + } + +} /********************************************* @@ -7685,6 +7908,7 @@ GAME( 199?, chry10, 0, chrygld, chry10, chry10, ROT0, "bootleg", GAME( 199?, ncb3, 0, ncb3, ncb3, 0, ROT0, "Dyna", "Cherry Bonus III (ver.1.40, set 1)", 0 ) GAME( 199?, cb3a, ncb3, ncb3, cb3a, 0, ROT0, "Dyna", "Cherry Bonus III (ver.1.40, set 2)", 0 ) GAME( 199?, cb3, ncb3, ncb3, ncb3, cb3, ROT0, "Dyna", "Cherry Bonus III (ver.1.40, encrypted)", 0 ) +GAME( 199?, cb3b, ncb3, cherrys, ncb3, cherrys, ROT0, "Dyna", "Cherry Bonus III (alt)", 0 ) // cherry master hardware has a rather different mem map, but is basically the same GAME( 198?, cmv801, 0, cm, cmv801, cm, ROT0, "Corsica", "Cherry Master (Corsica, ver.8.01)", 0 ) /* says ED-96 where the manufacturer is on some games.. */ @@ -7745,6 +7969,14 @@ GAME( 2003, carb2003, nfb96, amcoe2, nfb96bl, 0, ROT0, "bootleg" GAME( 2003, nfm, 0, nfm, nfb96bl, 0, ROT0, "Ming-Yang Electronic", "New Fruit Machine (Ming-Yang Electronic)", GAME_NOT_WORKING ) +// these have 'cherry 1994' in the program roms, but also "Super Cherry / New Cherry Gold '99" probably hacks of a 1994 version of Cherry Bonus / Cherry Master (Super Cherry Master?) +GAME( 1999, unkch1, 0, unkch, ncb3, 0, ROT0, "bootleg", "Super Cherry Master / New Cherry Gold '99 (set 1)", GAME_NOT_WORKING ) +GAME( 1999, unkch2, unkch1, unkch, ncb3, 0, ROT0, "bootleg", "Super Cherry Master / Super Cherry Gold", GAME_NOT_WORKING ) +GAME( 1999, unkch3, unkch1, unkch, ncb3, 0, ROT0, "bootleg", "Super Cherry Master / New Cherry Gold '99 (set 2)", GAME_NOT_WORKING ) +GAME( 1999, unkch4, unkch1, unkch, ncb3, 0, ROT0, "bootleg", "Super Cherry Master / Grand Cherry Master", GAME_NOT_WORKING ) + + + /* possible stealth sets: - cmv4a ---> see the 1fxx zone. put a bp in 1f9f to see the loop. diff --git a/src/mame/mamedriv.c b/src/mame/mamedriv.c index d1196bba9e5..93758abb7d9 100644 --- a/src/mame/mamedriv.c +++ b/src/mame/mamedriv.c @@ -9060,6 +9060,7 @@ Other Sun games DRIVER( ncb3 ) /* (c) 199? Dyna Electronics */ DRIVER( cb3a ) /* (c) 199? Dyna Electronics */ DRIVER( cb3 ) /* (c) 199? Dyna Electronics */ + DRIVER( cb3b ) /* (c) 199? Dyna Electronics */ DRIVER( cmv801 ) /* (c) 198? Corsica */ DRIVER( cmv4 ) /* (c) 1992 Dyna Electronics */ DRIVER( cmv4a ) /* (c) 1992 Dyna Electronics */ @@ -9121,6 +9122,10 @@ Other Sun games DRIVER( carb2002 ) /* bootleg */ DRIVER( carb2003 ) /* bootleg */ DRIVER( nfm ) /* bootleg */ + DRIVER( unkch1 ) /* bootleg */ + DRIVER( unkch2 ) /* bootleg */ + DRIVER( unkch3 ) /* bootleg */ + DRIVER( unkch4 ) /* bootleg */ DRIVER( ladylinr ) /* (c) 198? TAB Austria */ DRIVER( kkojnoli ) /* 198? south korean hack */