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