diff options
Diffstat (limited to 'src/mame/drivers/gaelco2.cpp')
-rw-r--r-- | src/mame/drivers/gaelco2.cpp | 204 |
1 files changed, 94 insertions, 110 deletions
diff --git a/src/mame/drivers/gaelco2.cpp b/src/mame/drivers/gaelco2.cpp index 5b5168b77d7..7e2a2bb81dd 100644 --- a/src/mame/drivers/gaelco2.cpp +++ b/src/mame/drivers/gaelco2.cpp @@ -18,7 +18,7 @@ Maniac Square | 1996 | GAE1 501 | 940411 | DS5002FP (unprotected version available) Snow Board | 1996 | CG-1V 366 | 960419/1 | Lattice IspLSI 1016-80LJ Bang! | 1998 | CG-1V 388 | 980921/1 | No - Gran Tesoro? | 1999 | CG-1V-149 | ? | DS5002FP (by Nova Desitec, might not fit here) + Play 2000 | 1999 | CG-1V-149 | ? | DS5002FP (by Nova Desitec) Notes: touchgo: @@ -32,7 +32,7 @@ #include "machine/eepromser.h" #include "sound/gaelco.h" -#include "cpu/mcs51/mcs51.h" +#include "machine/gaelco_ds5002fp.h" #include "rendlay.h" #include "screen.h" @@ -64,41 +64,6 @@ TILELAYOUT16(0x0400000) GFXDECODEINFO(0x0400000, 128) /*============================================================================ - DS5002FP - ============================================================================*/ - -READ8_MEMBER(gaelco2_state::dallas_share_r) -{ - uint8_t *shareram = (uint8_t *)m_shareram.target(); - return shareram[BYTE_XOR_BE(offset)]; -} - -WRITE8_MEMBER(gaelco2_state::dallas_share_w) -{ - uint8_t *shareram = (uint8_t *)m_shareram.target(); - shareram[BYTE_XOR_BE(offset)] = data; -} - -READ8_MEMBER(gaelco2_state::dallas_ram_r) -{ - return m_mcu_ram[offset]; -} - -WRITE8_MEMBER(gaelco2_state::dallas_ram_w) -{ - m_mcu_ram[offset] = data; -} - -static ADDRESS_MAP_START( dallas_rom, AS_PROGRAM, 8, gaelco2_state ) - AM_RANGE(0x0000, 0x7fff) AM_READWRITE(dallas_ram_r, dallas_ram_w) /* Code in NVRAM */ -ADDRESS_MAP_END - -static ADDRESS_MAP_START( dallas_ram, AS_IO, 8, gaelco2_state ) - AM_RANGE(0x08000, 0x0ffff) AM_READWRITE(dallas_share_r, dallas_share_w) /* confirmed that 0x8000 - 0xffff is a window into 68k shared RAM */ - AM_RANGE(0x10000, 0x17fff) AM_READWRITE(dallas_ram_r, dallas_ram_w) /* yes, the games access it as data and use it for temporary storage!! */ -ADDRESS_MAP_END - -/*============================================================================ MANIAC SQUARE (FINAL) ============================================================================*/ @@ -113,8 +78,8 @@ static ADDRESS_MAP_START( maniacsq_map, AS_PROGRAM, 16, gaelco2_state ) AM_RANGE(0x30004a, 0x30004b) AM_WRITENOP /* Sound muting? */ AM_RANGE(0x320000, 0x320001) AM_READ_PORT("COIN") /* COINSW + SERVICESW */ AM_RANGE(0x500000, 0x500001) AM_WRITE(gaelco2_coin_w) /* Coin lockout + counters */ - AM_RANGE(0xfe0000, 0xfebfff) AM_RAM /* Work RAM */ - AM_RANGE(0xfec000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM */ + AM_RANGE(0xfe0000, 0xfe7fff) AM_RAM /* Work RAM */ + AM_RANGE(0xfe8000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM */ ADDRESS_MAP_END @@ -229,6 +194,10 @@ static MACHINE_CONFIG_START( maniacsq ) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( maniacsq_d5002fp, maniacsq ) + MCFG_DEVICE_ADD("gaelco_ds5002fp", GAELCO_DS5002FP, XTAL_24MHz / 2) /* ? */ + GAELCO_DS5002FP_SET_SHARE_TAG("shareram") +MACHINE_CONFIG_END ROM_START( maniacsq ) ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 code */ @@ -250,9 +219,14 @@ ROM_START( maniacsqa ) // REF 940411 ROM_LOAD16_BYTE( "MS_U_45.U45", 0x000000, 0x020000, CRC(98f4fdc0) SHA1(1e4d5b0a8a432de885c96319c21280d304b38db0) ) ROM_LOAD16_BYTE( "MS_U_44.U44", 0x000001, 0x020000, CRC(1785dd41) SHA1(5c6a65c00248971ce54c8185858393f2c52cc583) ) - ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */ + ROM_REGION( 0x8000, "gaelco_ds5002fp:sram", 0 ) /* DS5002FP code */ ROM_LOAD( "ms_ds5002fp.bin", 0x00000, 0x8000, NO_DUMP ) + ROM_REGION( 0x100, "gaelco_ds5002fp:mcu:internal", ROMREGION_ERASE00 ) + //DS5002FP_SET_MON( x ) + //DS5002FP_SET_RPCTL( x ) + //DS5002FP_SET_CRCR( x ) + ROM_REGION( 0x0280000, "gfx1", 0 ) /* GFX + Sound */ // all 4 roms on a sub-board, no IC positions marked ROM_LOAD( "MS1", 0x0000000, 0x0080000, CRC(d8551b2f) SHA1(78b5b07112bd89fed18055180e7cc64f8e0bd0b1) ) /* GFX + Sound */ @@ -487,7 +461,8 @@ static ADDRESS_MAP_START( alighunt_map, AS_PROGRAM, 16, gaelco2_state ) AM_RANGE(0x320000, 0x320001) AM_READ_PORT("COIN") /* COINSW + SERVICESW */ AM_RANGE(0x500000, 0x500001) AM_WRITE(gaelco2_coin_w) /* Coin lockout + counters */ AM_RANGE(0x500006, 0x500007) AM_WRITENOP /* ??? */ - AM_RANGE(0xfe0000, 0xfeffff) AM_RAM /* Work RAM */ + AM_RANGE(0xfe0000, 0xfe7fff) AM_RAM /* Work RAM */ + AM_RANGE(0xfe8000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM (shared with D5002FP) */ ADDRESS_MAP_END @@ -601,6 +576,10 @@ static MACHINE_CONFIG_START( alighunt ) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( alighunt_d5002fp, alighunt ) + MCFG_DEVICE_ADD("gaelco_ds5002fp", GAELCO_DS5002FP, XTAL_24MHz / 2) /* ? */ + GAELCO_DS5002FP_SET_SHARE_TAG("shareram") +MACHINE_CONFIG_END /* PCB Layout: @@ -643,8 +622,14 @@ ROM_START( aligator ) ROM_LOAD16_BYTE( "u45", 0x000000, 0x080000, CRC(61c47c56) SHA1(6dd3fc6fdab252e0fb43c0793eef70203c888d7f) ) ROM_LOAD16_BYTE( "u44", 0x000001, 0x080000, CRC(f0be007a) SHA1(2112b2e5f020028b50c8f2c72c83c9fee7a78224) ) - ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */ - ROM_LOAD( "aligator_ds5002fp.bin", 0x00000, 0x8000, NO_DUMP ) + ROM_REGION( 0x8000, "gaelco_ds5002fp:sram", 0 ) /* DS5002FP code */ + ROM_LOAD( "touchgo_ds5002fp.bin", 0x00000, 0x8000, NO_DUMP ) + + ROM_REGION( 0x100, "gaelco_ds5002fp:mcu:internal", ROMREGION_ERASE00 ) + /* these are the default states stored in NVRAM */ + DS5002FP_SET_MON( 0x19 ) + DS5002FP_SET_RPCTL( 0x00 ) + DS5002FP_SET_CRCR( 0x80 ) ROM_REGION( 0x1400000, "gfx1", 0 ) /* GFX + Sound */ /* 0x0000000-0x0ffffff filled in in the DRIVER_INIT */ @@ -844,17 +829,13 @@ static MACHINE_CONFIG_START( touchgo ) MCFG_DEVICE_ADD("gaelco", GAELCO_GAE1, 0) MCFG_GAELCO_SND_DATA("gfx1") MCFG_GAELCO_BANKS(0 * 0x0400000, 1 * 0x0400000, 0, 0) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) + MCFG_SOUND_ROUTE(0, "rspeaker", 1.0) + MCFG_SOUND_ROUTE(1, "lspeaker", 1.0) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( touchgo_d5002fp, touchgo ) - MCFG_CPU_ADD("mcu", DS5002FP, XTAL_24MHz/2) /* ? */ - MCFG_DS5002FP_CONFIG( 0x19, 0x00, 0x80 ) /* default config verified on chip */ - MCFG_CPU_PROGRAM_MAP(dallas_rom) - MCFG_CPU_IO_MAP(dallas_ram) - - MCFG_QUANTUM_PERFECT_CPU("mcu") + MCFG_DEVICE_ADD("gaelco_ds5002fp", GAELCO_DS5002FP, XTAL_24MHz / 2) /* ? */ + GAELCO_DS5002FP_SET_SHARE_TAG("shareram") MACHINE_CONFIG_END /* @@ -905,8 +886,16 @@ ROM_START( touchgo ) /* REF: 950906 */ ROM_LOAD16_BYTE( "tg_56", 0x000000, 0x080000, CRC(8ab065f3) SHA1(7664abd7e5f66ffca4a2865bba56ac36bd04f4e9) ) ROM_LOAD16_BYTE( "tg_57", 0x000001, 0x080000, CRC(0dfd3f65) SHA1(afb2ce8988c84f211ac71b84928ce4c421de7fee) ) - ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */ - ROM_LOAD( "touchgo_ds5002fp.bin", 0x00000, 0x8000, BAD_DUMP CRC(e977d2db) SHA1(d6a4ef74eb776d9e898f25a70f0302f3199b4fa1) ) /* marked as BAD_DUMP until a 2nd board is used to verify */ + ROM_REGION( 0x8000, "gaelco_ds5002fp:sram", 0 ) /* DS5002FP code */ + ROM_LOAD( "touchgo_ds5002fp.bin", 0x00000, 0x8000, BAD_DUMP CRC(a497e1af) SHA1(68ee1f87631183541adadf927fb18ed4422d5bb6) ) /* marked as BAD_DUMP until a 2nd board is used to verify */ + + ROM_REGION( 0x100, "gaelco_ds5002fp:mcu:internal", ROMREGION_ERASE00 ) + /* touchgo requires some valids in scratchram to be initialized or it won't copy the high score table when it boots */ + ROM_LOAD( "touchgo_scratch", 0x00, 0x80, CRC(f9ca54ff) SHA1(416f7bd89442dc1f736efe457b0f9a7f4f9f0bd5) ) + /* these are the default states stored in NVRAM */ + DS5002FP_SET_MON( 0x19 ) + DS5002FP_SET_RPCTL( 0x00 ) + DS5002FP_SET_CRCR( 0x80 ) ROM_REGION( 0x1400000, "gfx1", 0 ) /* GFX + Sound */ /* 0x0000000-0x0ffffff filled in in the DRIVER_INIT */ @@ -924,9 +913,17 @@ ROM_START( touchgon ) /* REF 950906, no plug-in daughterboard, Non North America ROM_LOAD16_BYTE( "tg56.bin", 0x000000, 0x080000, CRC(fd3b4642) SHA1(3cab42aecad5ee641711763c6047b56784c2bcf3) ) ROM_LOAD16_BYTE( "tg57.bin", 0x000001, 0x080000, CRC(ee891835) SHA1(9f8c60e5e3696b70f756c3521e10313005053cc7) ) - ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */ + ROM_REGION( 0x8000, "gaelco_ds5002fp:sram", 0 ) /* DS5002FP code */ ROM_LOAD( "touchgo_ds5002fp.bin", 0x00000, 0x8000, BAD_DUMP CRC(e977d2db) SHA1(d6a4ef74eb776d9e898f25a70f0302f3199b4fa1) ) /* marked as BAD_DUMP until a 2nd board is used to verify */ + ROM_REGION( 0x100, "gaelco_ds5002fp:mcu:internal", ROMREGION_ERASE00 ) + /* touchgo requires some valids in scratchram to be initialized or it won't copy the high score table when it boots */ + ROM_LOAD( "touchgo_scratch", 0x00, 0x80, CRC(f9ca54ff) SHA1(416f7bd89442dc1f736efe457b0f9a7f4f9f0bd5) ) + /* these are the default states stored in NVRAM */ + DS5002FP_SET_MON( 0x19 ) + DS5002FP_SET_RPCTL( 0x00 ) + DS5002FP_SET_CRCR( 0x80 ) + ROM_REGION( 0x1400000, "gfx1", 0 ) /* GFX + Sound */ /* 0x0000000-0x0ffffff filled in in the DRIVER_INIT */ ROM_LOAD( "ic69", 0x1000000, 0x0200000, CRC(18bb12d4) SHA1(ee6e7a63b86c56d71e62db0ae5892ab3ab94b0a0) ) /* GFX only */ @@ -943,9 +940,17 @@ ROM_START( touchgoe ) /* REF: 950510-1 */ ROM_LOAD16_BYTE( "tg56", 0x000000, 0x080000, CRC(6d0f5c65) SHA1(00db7a7da3ec1676169aa78fe4f08a7746c3accf) ) ROM_LOAD16_BYTE( "tg57", 0x000001, 0x080000, CRC(845787b5) SHA1(27c9910cd9f38328326ecb5cd093dfeb6d4f6244) ) - ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */ + ROM_REGION( 0x8000, "gaelco_ds5002fp:sram", 0 ) /* DS5002FP code */ ROM_LOAD( "touchgo_ds5002fp.bin", 0x00000, 0x8000, BAD_DUMP CRC(e977d2db) SHA1(d6a4ef74eb776d9e898f25a70f0302f3199b4fa1) ) /* marked as BAD_DUMP until a 2nd board is used to verify */ + ROM_REGION( 0x100, "gaelco_ds5002fp:mcu:internal", ROMREGION_ERASE00 ) + /* touchgo requires some valids in scratchram to be initialized or it won't copy the high score table when it boots */ + ROM_LOAD( "touchgo_scratch", 0x00, 0x80, CRC(f9ca54ff) SHA1(416f7bd89442dc1f736efe457b0f9a7f4f9f0bd5) ) + /* these are the default states stored in NVRAM */ + DS5002FP_SET_MON( 0x19 ) + DS5002FP_SET_RPCTL( 0x00 ) + DS5002FP_SET_CRCR( 0x80 ) + ROM_REGION( 0x1400000, "gfx1", 0 ) /* GFX + Sound */ /* 0x0000000-0x0ffffff filled in in the DRIVER_INIT */ ROM_LOAD( "ic69", 0x1000000, 0x0200000, CRC(18bb12d4) SHA1(ee6e7a63b86c56d71e62db0ae5892ab3ab94b0a0) ) /* GFX only */ @@ -1272,12 +1277,8 @@ static MACHINE_CONFIG_START( wrally2 ) MCFG_CPU_PROGRAM_MAP(wrally2_map) MCFG_CPU_VBLANK_INT_DRIVER("lscreen", gaelco2_state, irq6_line_hold) - MCFG_CPU_ADD("mcu", DS5002FP, XTAL_24MHz/2) /* ? */ - MCFG_DS5002FP_CONFIG( 0x69, 0x00, 0x80 ) /* default config verified on chip */ - MCFG_CPU_PROGRAM_MAP(dallas_rom) - MCFG_CPU_IO_MAP(dallas_ram) - - MCFG_QUANTUM_PERFECT_CPU("mcu") + MCFG_DEVICE_ADD("gaelco_ds5002fp", GAELCO_DS5002FP, XTAL_24MHz / 2) + GAELCO_DS5002FP_SET_SHARE_TAG("shareram") MCFG_EEPROM_SERIAL_93C66_ADD("eeprom") @@ -1315,8 +1316,8 @@ static MACHINE_CONFIG_START( wrally2 ) MCFG_DEVICE_ADD("gaelco", GAELCO_GAE1, 0) MCFG_GAELCO_SND_DATA("gfx1") MCFG_GAELCO_BANKS(0 * 0x0200000, 1 * 0x0200000, 0, 0) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) + MCFG_SOUND_ROUTE(0, "rspeaker", 1.0) + MCFG_SOUND_ROUTE(1, "lspeaker", 1.0) MACHINE_CONFIG_END /* @@ -1425,8 +1426,8 @@ ROM_START( wrally2 ) ROM_LOAD16_BYTE( "wr2.64", 0x000000, 0x080000, CRC(4cdf4e1e) SHA1(a3b3ff4a70336b61c7bba5d518527bf4bd901867) ) ROM_LOAD16_BYTE( "wr2.63", 0x000001, 0x080000, CRC(94887c9f) SHA1(ad09f1fbeff4c3ba47f72346d261b22fa6a51457) ) - ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */ - /* This SRAM has been dumped from 2 PCBs. The first had unused space filled as 0x00, the 2nd space was filled as 0xff. + ROM_REGION( 0x8000, "gaelco_ds5002fp:sram", 0 ) /* DS5002FP code */ + /* This SRAM has been dumped from 2 PCBs. The first had unused space filled as 0xff, the 2nd space was filled as 0x00. In addition, the first had 2 bad bytes, one of which was identified at the time, the other not. For reference the one that was not is "1938: 18 <-> 9B" (part of a data table) @@ -1452,9 +1453,14 @@ ROM_START( wrally2 ) either way the 2nd dump is in much better state, so we're using that. */ - ROM_LOAD( "wr2_dallas.bin", 0x00000, 0x8000, CRC(4c532e9e) SHA1(d0aad72b204d4abd3b8d7d5bbaf8d2d2f78edaa6) ) + ROM_REGION( 0x100, "gaelco_ds5002fp:mcu:internal", ROMREGION_ERASE00 ) + /* these are the default states stored in NVRAM */ + DS5002FP_SET_MON( 0x69 ) + DS5002FP_SET_RPCTL( 0x00 ) + DS5002FP_SET_CRCR( 0x80 ) + ROM_REGION( 0x0a00000, "gfx1", 0 ) /* GFX + Sound */ ROM_LOAD( "wr2.16d", 0x0000000, 0x0080000, CRC(ad26086b) SHA1(487ffaaca57c9d030fc486b8cae6735ee40a0ac3) ) /* GFX only */ ROM_LOAD( "wr2.17d", 0x0080000, 0x0080000, CRC(c1ec0745) SHA1(a6c3ce9c889e6a53f4155f54d6655825af34a35b) ) /* GFX only */ @@ -1507,6 +1513,9 @@ Title is uncertain. A string at 27e00 says: "Play 2000 v5.01 (c) 1999", but there are also some gfxs that says "Gran Tesoro" all over the place. I don't know what's the correct title for this one... +see +http://web.archive.org/web/20001206204300/http://luckysunshine.com/products/gameboards/play2000.html + */ ROM_START( grtesoro ) @@ -1515,9 +1524,14 @@ ROM_START( grtesoro ) ROM_LOAD16_BYTE( "2.u39", 0x000000, 0x020000, BAD_DUMP CRC(9939299e) SHA1(55303a2adf199f4b5a60f57be7480b0e119f8624) ) ROM_LOAD16_BYTE( "1.u40", 0x000001, 0x020000, BAD_DUMP CRC(311c2f94) SHA1(963d6b5f479598145146fcb8b7c6ce77fbc92b07) ) - ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */ + ROM_REGION( 0x8000, "gaelco_ds5002fp:sram", 0 ) /* DS5002FP code */ ROM_LOAD( "ds5002fp.bin", 0x00000, 0x8000, NO_DUMP ) + ROM_REGION( 0x100, "gaelco_ds5002fp:mcu:internal", ROMREGION_ERASE00 ) + //DS5002FP_SET_MON( x ) + //DS5002FP_SET_RPCTL( x ) + //DS5002FP_SET_CRCR( x ) + ROM_REGION( 0x0300000, "gfx1", 0 ) /* GFX + Sound */ ROM_LOAD( "3.u54", 0x0000000, 0x0080000, CRC(085008ed) SHA1(06eb4f972d79eab13b1b3b6829ef280e079abdb6) ) ROM_LOAD( "4.u53", 0x0080000, 0x0080000, CRC(94dc37a7) SHA1(28f9832b61541b292682a6e2d2264abccd138a2e) ) @@ -1534,9 +1548,14 @@ ROM_START( grtesoro4 ) /* there are version 4.0 and version 1.0 strings in this, ROM_LOAD16_BYTE( "2.u39_v4", 0x000000, 0x020000, CRC(fff16141) SHA1(8493c3e58a231c03b152b336f43422a9a2d2618c) ) ROM_LOAD16_BYTE( "1.u40_v4", 0x000001, 0x020000, CRC(39f9d58e) SHA1(1cbdae2adc570f2a2e10a707075312ef717e2643) ) - ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */ + ROM_REGION( 0x8000, "gaelco_ds5002fp:sram", 0 ) /* DS5002FP code */ ROM_LOAD( "ds5002fp.bin", 0x00000, 0x8000, NO_DUMP ) + ROM_REGION( 0x100, "gaelco_ds5002fp:mcu:internal", ROMREGION_ERASE00 ) + //DS5002FP_SET_MON( x ) + //DS5002FP_SET_RPCTL( x ) + //DS5002FP_SET_CRCR( x ) + ROM_REGION( 0x0300000, "gfx1", 0 ) /* GFX + Sound */ ROM_LOAD( "3.u54", 0x0000000, 0x0080000, CRC(085008ed) SHA1(06eb4f972d79eab13b1b3b6829ef280e079abdb6) ) ROM_LOAD( "4.u53", 0x0080000, 0x0080000, CRC(94dc37a7) SHA1(28f9832b61541b292682a6e2d2264abccd138a2e) ) @@ -1549,44 +1568,9 @@ ROM_START( grtesoro4 ) /* there are version 4.0 and version 1.0 strings in this, ROM_END -READ16_MEMBER(gaelco2_state::maniacsqa_prot_r) -{ - int pc = space.device().safe_pc(); - - // if -1 is returned at any point on these checks the game instantly reports 'power failure' - // these are generally done right before the other checks - if (pc == 0x3dbc) return 0x0000; // must not be -1 - if (pc == 0x5ce4) return 0x0000; // must not be -1 - if (pc == 0x5d08) return 0x0000; // must not be -1 (stores 5 here just before) - if (pc == 0xaa90) return 0x0000; // must not be -1 - if (pc == 0xaab2) return 0x0000; // must not be -1 - if (pc == 0x9f10) return 0x0000; // must not be -1 - if (pc == 0x3b86) return 0x0000; // must not be -1 - - if (pc == 0x3dce) return 0x0000; // must be 0 - - if (pc == 0x25c2) return 0x0000; // writes 0 to 0xfe45fa then expects this to be 0 - - if (pc == 0x5cf6) return 0x0000; // must be 0 - if (pc == 0x5d1a) return 0x0000; // must be 0 - if (pc == 0xaaa0) return 0x0000; // must be 0? - - if (pc == 0xaac4) return 0x0000; // checks for 0, 2 possible code paths after - happens when piece is dropped - if (pc == 0xaad0) return 0x0a00; // if above ISN'T 0 this must be 0x0a00 (but code then dies, probably wants some data filled?) - // other code path just results in no more pieces dropping? maybe the MCU does the matching algorithm? - - printf("read at PC %08x\n", pc); - return m_shareram[(0xfedaa2 - 0xfec000) / 2]; - -} - -DRIVER_INIT_MEMBER(gaelco2_state,maniacsqa) -{ - m_maincpu->space(AS_PROGRAM).install_read_handler(0xfedaa2, 0xfedaa3, read16_delegate(FUNC(gaelco2_state::maniacsqa_prot_r), this) ); -} -GAME( 1994, aligator, 0, alighunt, alighunt, gaelco2_state, alighunt, ROT0, "Gaelco", "Alligator Hunt", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1994, aligatorun,aligator,alighunt, alighunt, gaelco2_state, alighunt, ROT0, "Gaelco", "Alligator Hunt (unprotected)", 0 ) +GAME( 1994, aligator, 0, alighunt_d5002fp, alighunt, gaelco2_state, alighunt, ROT0, "Gaelco", "Alligator Hunt", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1994, aligatorun,aligator,alighunt, alighunt, gaelco2_state, alighunt, ROT0, "Gaelco", "Alligator Hunt (unprotected)", 0 ) GAME( 1995, touchgo, 0, touchgo_d5002fp, touchgo, gaelco2_state, touchgo, ROT0, "Gaelco", "Touch & Go (World)", MACHINE_IMPERFECT_SOUND ) GAME( 1995, touchgon, touchgo, touchgo_d5002fp, touchgo, gaelco2_state, touchgo, ROT0, "Gaelco", "Touch & Go (Non North America)", MACHINE_IMPERFECT_SOUND ) @@ -1595,8 +1579,8 @@ GAME( 1995, touchgok, touchgo, touchgo, touchgo, gaelco2_state, touch GAME( 1995, wrally2, 0, wrally2, wrally2, wrally2_state, 0, ROT0, "Gaelco", "World Rally 2: Twin Racing", 0 ) -GAME( 1996, maniacsq, 0, maniacsq, maniacsq, gaelco2_state, 0, ROT0, "Gaelco", "Maniac Square (unprotected)", 0 ) -GAME( 1996, maniacsqa,maniacsq, maniacsq, maniacsq, gaelco2_state, maniacsqa,ROT0, "Gaelco", "Maniac Square (protected)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1996, maniacsq, 0, maniacsq, maniacsq, gaelco2_state, 0, ROT0, "Gaelco", "Maniac Square (unprotected)", 0 ) +GAME( 1996, maniacsqa,maniacsq, maniacsq_d5002fp, maniacsq, gaelco2_state, 0, ROT0, "Gaelco", "Maniac Square (protected)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) GAME( 1996, snowboar, 0, snowboar, snowboar, gaelco2_state, 0, ROT0, "Gaelco", "Snow Board Championship (Version 2.1)", 0 ) GAME( 1996, snowboara,snowboar, snowboar, snowboar, gaelco2_state, snowboar, ROT0, "Gaelco", "Snow Board Championship (Version 2.0)", 0 ) @@ -1604,6 +1588,6 @@ GAME( 1996, snowboara,snowboar, snowboar, snowboar, gaelco2_state, snowboar, ROT GAME( 1998, bang, 0, bang, bang, bang_state, bang, ROT0, "Gaelco", "Bang!", 0 ) GAME( 1998, bangj, bang, bang, bang, bang_state, bang, ROT0, "Gaelco", "Gun Gabacho (Japan)", 0 ) -// are these ACTUALLY Gaelco hardware, or do they just use the same Dallas? -GAME( 1999, grtesoro, 0, maniacsq, maniacsq, gaelco2_state, 0, ROT0, "Nova Desitec", "Gran Tesoro? / Play 2000 (v5.01) (Italy)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1999, grtesoro4, grtesoro,maniacsq, maniacsq, gaelco2_state, 0, ROT0, "Nova Desitec", "Gran Tesoro? / Play 2000 (v4.0) (Italy)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +// 2-in-1 gambling game, appears to be cloned Gaelco hardware complete with DS5002FP, or possibly manufactured by Gaelco for Nova Desitec but without any Gaelco branding. +GAME( 1999, grtesoro, 0, maniacsq, maniacsq, gaelco2_state, 0, ROT0, "Nova Desitec", "Play 2000 (Super Slot & Gran Tesoro) (v5.01) (Italy)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1999, grtesoro4, grtesoro,maniacsq, maniacsq, gaelco2_state, 0, ROT0, "Nova Desitec", "Play 2000 (Super Slot & Gran Tesoro) (v4.0) (Italy)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) |