trunk/src/mame/drivers/gaelco2.cpp
| r252941 | r252942 | |
| 67 | 67 | AM_RANGE(0x30004a, 0x30004b) AM_WRITENOP /* Sound muting? */ |
| 68 | 68 | AM_RANGE(0x320000, 0x320001) AM_READ_PORT("COIN") /* COINSW + SERVICESW */ |
| 69 | 69 | AM_RANGE(0x500000, 0x500001) AM_WRITE(gaelco2_coin_w) /* Coin lockout + counters */ |
| 70 | | AM_RANGE(0xfe0000, 0xfeffff) AM_RAM /* Work RAM */ |
| 70 | AM_RANGE(0xfe0000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM */ |
| 71 | 71 | ADDRESS_MAP_END |
| 72 | 72 | |
| 73 | 73 | |
| r252941 | r252942 | |
| 1453 | 1453 | ROM_LOAD( "palce16v8h.u29", 0x0000, 0x0117, BAD_DUMP CRC(4a0a6f39) SHA1(57351e471649391c9abf110828fe2f128fe84eee) ) |
| 1454 | 1454 | ROM_END |
| 1455 | 1455 | |
| 1456 | |
| 1457 | READ16_MEMBER(gaelco2_state::maniacsqa_prot_r) |
| 1458 | { |
| 1459 | int pc = space.device().safe_pc(); |
| 1460 | |
| 1461 | // if -1 is returned at any point on these checks the game instantly reports 'power failure' |
| 1462 | // these are generally done right before the other checks |
| 1463 | if (pc == 0x3dbc) return 0x0000; // must not be -1 |
| 1464 | if (pc == 0x5ce4) return 0x0000; // must not be -1 |
| 1465 | if (pc == 0x5d08) return 0x0000; // must not be -1 (stores 5 here just before) |
| 1466 | if (pc == 0xaa90) return 0x0000; // must not be -1 |
| 1467 | if (pc == 0xaab2) return 0x0000; // must not be -1 |
| 1468 | if (pc == 0x9f10) return 0x0000; // must not be -1 |
| 1469 | if (pc == 0x3b86) return 0x0000; // must not be -1 |
| 1470 | |
| 1471 | if (pc == 0x3dce) return 0x0000; // must be 0 |
| 1472 | |
| 1473 | if (pc == 0x25c2) return 0x0000; // writes 0 to 0xfe45fa then expects this to be 0 |
| 1474 | |
| 1475 | if (pc == 0x5cf6) return 0x0000; // must be 0 |
| 1476 | if (pc == 0x5d1a) return 0x0000; // must be 0 |
| 1477 | if (pc == 0xaaa0) return 0x0000; // must be 0? |
| 1478 | |
| 1479 | if (pc == 0xaac4) return 0x0000; // checks for 0, 2 possible code paths after - happens when piece is dropped |
| 1480 | if (pc == 0xaad0) return 0x0a00; // if above ISN'T 0 this must be 0x0a00 (but code then dies, probably wants some data filled?) |
| 1481 | // other code path just results in no more pieces dropping? maybe the MCU does the matching algorithm? |
| 1482 | |
| 1483 | |
| 1484 | |
| 1485 | |
| 1486 | |
| 1487 | printf("read at PC %08x\n", pc); |
| 1488 | return m_shareram[(0xfedaa2 - 0xfe0000) / 2]; |
| 1489 | |
| 1490 | } |
| 1491 | |
| 1492 | DRIVER_INIT_MEMBER(gaelco2_state,maniacsqa) |
| 1493 | { |
| 1494 | m_maincpu->space(AS_PROGRAM).install_read_handler(0xfedaa2, 0xfedaa3, read16_delegate(FUNC(gaelco2_state::maniacsqa_prot_r), this) ); |
| 1495 | } |
| 1496 | |
| 1497 | |
| 1456 | 1498 | GAME( 1994, aligator, 0, alighunt, alighunt, gaelco2_state, alighunt, ROT0, "Gaelco", "Alligator Hunt", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) |
| 1457 | 1499 | GAME( 1994, aligatorun,aligator,alighunt, alighunt, gaelco2_state, alighunt, ROT0, "Gaelco", "Alligator Hunt (unprotected)", 0 ) |
| 1458 | 1500 | GAME( 1995, touchgo, 0, touchgo, touchgo, gaelco2_state, touchgo, ROT0, "Gaelco", "Touch & Go (World)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) |
| r252941 | r252942 | |
| 1460 | 1502 | GAME( 1995, touchgoe, touchgo, touchgo, touchgo, gaelco2_state, touchgo, ROT0, "Gaelco", "Touch & Go (earlier revision)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) |
| 1461 | 1503 | GAME( 1995, wrally2, 0, wrally2, wrally2, driver_device, 0, ROT0, "Gaelco", "World Rally 2: Twin Racing", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) |
| 1462 | 1504 | GAME( 1996, maniacsq, 0, maniacsq, maniacsq, driver_device, 0, ROT0, "Gaelco", "Maniac Square (unprotected)", 0 ) |
| 1463 | | GAME( 1996, maniacsqa,maniacsq, maniacsq, maniacsq, driver_device, 0, ROT0, "Gaelco", "Maniac Square (protected)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) |
| 1505 | GAME( 1996, maniacsqa,maniacsq, maniacsq, maniacsq, gaelco2_state, maniacsqa,ROT0, "Gaelco", "Maniac Square (protected)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) |
| 1464 | 1506 | GAME( 1996, snowboar, 0, snowboar, snowboar, driver_device, 0, ROT0, "Gaelco", "Snow Board Championship (Version 2.1)", 0 ) |
| 1465 | 1507 | GAME( 1996, snowboara,snowboar, snowboar, snowboar, gaelco2_state, snowboar, ROT0, "Gaelco", "Snow Board Championship (Version 2.0)", 0 ) |
| 1466 | 1508 | GAME( 1998, bang, 0, bang, bang, bang_state, bang, ROT0, "Gaelco", "Bang!", 0 ) |
trunk/src/mame/includes/gaelco2.h
| r252941 | r252942 | |
| 16 | 16 | m_eeprom(*this, "eeprom"), |
| 17 | 17 | m_gfxdecode(*this, "gfxdecode"), |
| 18 | 18 | m_palette(*this, "palette"), |
| 19 | | m_generic_paletteram_16(*this, "paletteram") { } |
| 19 | m_generic_paletteram_16(*this, "paletteram"), |
| 20 | m_shareram(*this, "shareram") |
| 21 | { } |
| 20 | 22 | |
| 21 | 23 | required_device<m68000_device> m_maincpu; |
| 22 | 24 | required_device<buffered_spriteram16_device> m_spriteram; |
| r252941 | r252942 | |
| 26 | 28 | required_device<gfxdecode_device> m_gfxdecode; |
| 27 | 29 | required_device<palette_device> m_palette; |
| 28 | 30 | required_shared_ptr<UINT16> m_generic_paletteram_16; |
| 31 | optional_shared_ptr<UINT16> m_shareram; |
| 29 | 32 | |
| 33 | |
| 34 | |
| 30 | 35 | UINT32 snowboard_latch; |
| 31 | 36 | |
| 32 | 37 | |
| r252941 | r252942 | |
| 34 | 39 | tilemap_t *m_pant[2]; |
| 35 | 40 | int m_dual_monitor; |
| 36 | 41 | |
| 37 | | DECLARE_READ16_MEMBER(dallas_kludge_r); |
| 42 | DECLARE_READ16_MEMBER(dallas_kludge_r); |
| 43 | DECLARE_READ16_MEMBER(maniacsqa_prot_r); |
| 44 | |
| 38 | 45 | DECLARE_WRITE16_MEMBER(gaelco2_coin_w); |
| 39 | 46 | DECLARE_WRITE16_MEMBER(gaelco2_coin2_w); |
| 40 | 47 | DECLARE_WRITE16_MEMBER(touchgo_coin_w); |
| r252941 | r252942 | |
| 45 | 52 | DECLARE_DRIVER_INIT(touchgo); |
| 46 | 53 | DECLARE_DRIVER_INIT(snowboar); |
| 47 | 54 | DECLARE_DRIVER_INIT(alighunt); |
| 55 | DECLARE_DRIVER_INIT(maniacsqa); |
| 48 | 56 | TILE_GET_INFO_MEMBER(get_tile_info_gaelco2_screen0); |
| 49 | 57 | TILE_GET_INFO_MEMBER(get_tile_info_gaelco2_screen1); |
| 50 | 58 | TILE_GET_INFO_MEMBER(get_tile_info_gaelco2_screen0_dual); |