trunk/src/mame/drivers/alpha68k.c
| r245580 | r245581 | |
| 110 | 110 | - There is no Dip Switch to determine if you are allowed to continue a game |
| 111 | 111 | or not, so you ALWAYS have the possibility to continue a game. |
| 112 | 112 | |
| 113 | | 9) 'sbasebal' |
| 114 | | |
| 115 | | - IMO, there must exist a Japan version of this game which is currently |
| 116 | | undumped ! Set the SBASEBAL_HACK to 1 and you'll notice the following |
| 117 | | differences : |
| 118 | | |
| 119 | | * different manufacturer (no more SNK license) |
| 120 | | * different coinage (check code at 0x00035c) and additional COIN2 |
| 121 | | * different game time (check code at 0x001d20) |
| 122 | | * different table for "Unknown" Dip Switch |
| 123 | | |
| 124 | | |
| 113 | |
| 125 | 114 | Stephh's log (2002.06.19) : |
| 126 | 115 | |
| 127 | 116 | - Create macros for players inputs and "Coinage" Dip Switch |
| r245580 | r245581 | |
| 204 | 193 | #include "sound/2203intf.h" |
| 205 | 194 | #include "includes/alpha68k.h" |
| 206 | 195 | |
| 207 | | #define SBASEBAL_HACK 0 |
| 208 | 196 | |
| 209 | 197 | |
| 198 | |
| 210 | 199 | /******************************************************************************/ |
| 211 | 200 | |
| 212 | 201 | WRITE16_MEMBER(alpha68k_state::tnextspc_coin_counters_w) |
| r245580 | r245581 | |
| 1457 | 1446 | |
| 1458 | 1447 | PORT_START("IN2") /* Coin input to microcontroller */ |
| 1459 | 1448 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 1460 | | #if SBASEBAL_HACK |
| 1461 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) |
| 1462 | | #else |
| 1463 | 1449 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // COIN2 - unused due to code at 0x0002b4 |
| 1464 | | #endif |
| 1465 | 1450 | |
| 1451 | |
| 1466 | 1452 | PORT_START("IN3") /* Service + dip */ |
| 1467 | 1453 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) |
| 1468 | 1454 | PORT_SERVICE_NO_TOGGLE(0x02, IP_ACTIVE_LOW) |
| r245580 | r245581 | |
| 1481 | 1467 | PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) |
| 1482 | 1468 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1483 | 1469 | PORT_DIPNAME( 0xc0, 0x80, DEF_STR( Game_Time ) ) |
| 1484 | | #if SBASEBAL_HACK |
| 1485 | | PORT_DIPSETTING( 0x00, "4:30" ) |
| 1486 | | PORT_DIPSETTING( 0x80, "4:00" ) |
| 1487 | | PORT_DIPSETTING( 0x40, "3:30" ) |
| 1488 | | PORT_DIPSETTING( 0xc0, "3:00" ) |
| 1489 | | #else |
| 1490 | 1470 | PORT_DIPSETTING( 0x00, "3:30" ) |
| 1491 | 1471 | PORT_DIPSETTING( 0x80, "3:00" ) |
| 1492 | 1472 | PORT_DIPSETTING( 0x40, "2:30" ) |
| 1493 | 1473 | PORT_DIPSETTING( 0xc0, "2:00" ) |
| 1494 | | #endif |
| 1495 | 1474 | |
| 1475 | |
| 1496 | 1476 | PORT_START("IN4") /* A 6 way dip switch */ |
| 1497 | 1477 | PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) // Check code at 0x009d3a |
| 1498 | 1478 | PORT_DIPSETTING( 0x02, DEF_STR( Easy ) ) |
| 1499 | 1479 | PORT_DIPSETTING( 0x03, DEF_STR( Normal ) ) |
| 1500 | 1480 | PORT_DIPSETTING( 0x01, DEF_STR( Hard ) ) |
| 1501 | 1481 | PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) |
| 1502 | | #if SBASEBAL_HACK |
| 1503 | | ALPHA68K_COINAGE_BITS_2TO4 |
| 1504 | | #else |
| 1505 | 1482 | PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coinage ) ) |
| 1506 | 1483 | PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) |
| 1507 | 1484 | PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) |
| r245580 | r245581 | |
| 1510 | 1487 | PORT_DIPNAME( 0x10, 0x00, "Price to Continue" ) |
| 1511 | 1488 | PORT_DIPSETTING( 0x10, DEF_STR( 1C_1C ) ) |
| 1512 | 1489 | PORT_DIPSETTING( 0x00, "Same as Start" ) |
| 1513 | | #endif |
| 1490 | |
| 1514 | 1491 | PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) |
| 1515 | 1492 | PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) |
| 1516 | 1493 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1517 | 1494 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 1518 | 1495 | INPUT_PORTS_END |
| 1519 | 1496 | |
| 1497 | |
| 1498 | |
| 1499 | static INPUT_PORTS_START( sbasebalj ) |
| 1500 | PORT_START("IN0") |
| 1501 | ALPHA68K_PLAYER_INPUT_LSB( 1, IPT_BUTTON3, IPT_START1, IP_ACTIVE_LOW ) |
| 1502 | |
| 1503 | PORT_START("IN1") |
| 1504 | ALPHA68K_PLAYER_INPUT_LSB( 2, IPT_BUTTON3, IPT_START2, IP_ACTIVE_LOW ) |
| 1505 | |
| 1506 | PORT_START("IN2") /* Coin input to microcontroller */ |
| 1507 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 1508 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) |
| 1509 | |
| 1510 | |
| 1511 | PORT_START("IN3") /* Service + dip */ |
| 1512 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) |
| 1513 | PORT_SERVICE_NO_TOGGLE(0x02, IP_ACTIVE_LOW) |
| 1514 | |
| 1515 | /* 2 physical sets of _6_ dip switches */ |
| 1516 | PORT_DIPNAME( 0x04, 0x04, "Freeze" ) |
| 1517 | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| 1518 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1519 | PORT_DIPNAME( 0x08, 0x08, DEF_STR( Flip_Screen ) ) |
| 1520 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 1521 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1522 | PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) ) |
| 1523 | PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) |
| 1524 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1525 | PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) // Check code at 0x0089e6 |
| 1526 | PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) |
| 1527 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1528 | PORT_DIPNAME( 0xc0, 0x80, DEF_STR( Game_Time ) ) |
| 1529 | PORT_DIPSETTING( 0x00, "4:30" ) |
| 1530 | PORT_DIPSETTING( 0x80, "4:00" ) |
| 1531 | PORT_DIPSETTING( 0x40, "3:30" ) |
| 1532 | PORT_DIPSETTING( 0xc0, "3:00" ) |
| 1533 | |
| 1534 | |
| 1535 | PORT_START("IN4") /* A 6 way dip switch */ |
| 1536 | PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) // Check code at 0x009d3a |
| 1537 | PORT_DIPSETTING( 0x02, DEF_STR( Easy ) ) |
| 1538 | PORT_DIPSETTING( 0x03, DEF_STR( Normal ) ) |
| 1539 | PORT_DIPSETTING( 0x01, DEF_STR( Hard ) ) |
| 1540 | PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) |
| 1541 | ALPHA68K_COINAGE_BITS_2TO4 |
| 1542 | |
| 1543 | PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) |
| 1544 | PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) |
| 1545 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1546 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 1547 | INPUT_PORTS_END |
| 1548 | |
| 1549 | |
| 1550 | |
| 1520 | 1551 | static INPUT_PORTS_START( tnextspc ) |
| 1521 | 1552 | PORT_START("P1") |
| 1522 | 1553 | ALPHA68K_PLAYER_INPUT_LSB( 1, IPT_UNKNOWN, IPT_START1, IP_ACTIVE_LOW ) |
| r245580 | r245581 | |
| 3135 | 3166 | |
| 3136 | 3167 | ROM_START( sbasebal ) |
| 3137 | 3168 | ROM_REGION( 0x40000, "maincpu", 0 ) |
| 3138 | | ROM_LOAD16_BYTE( "snksb1.bin", 0x00000, 0x20000, CRC(304fef2d) SHA1(03154e590807f7fd009068b403e1ea039272029d) ) |
| 3139 | | ROM_LOAD16_BYTE( "snksb2.bin", 0x00001, 0x20000, CRC(35821339) SHA1(2c4303bf799de7cb364cadac44ff28306088e2f4) ) |
| 3169 | ROM_LOAD16_BYTE( "snksb1.c19", 0x00000, 0x20000, CRC(304fef2d) SHA1(03154e590807f7fd009068b403e1ea039272029d) ) |
| 3170 | ROM_LOAD16_BYTE( "snksb2.e19", 0x00001, 0x20000, CRC(35821339) SHA1(2c4303bf799de7cb364cadac44ff28306088e2f4) ) |
| 3140 | 3171 | |
| 3141 | | ROM_REGION( 0x90000, "audiocpu", 0 ) /* Sound CPU */ |
| 3142 | | ROM_LOAD( "snksb3.bin", 0x00000, 0x08000, CRC(89e12f25) SHA1(1c569958a7f5a91b54f1316c1d5ee027be8618d6) ) |
| 3143 | | ROM_CONTINUE( 0x18000, 0x08000 ) |
| 3144 | | ROM_LOAD( "snksb4.bin", 0x30000, 0x10000, CRC(cca2555d) SHA1(13c672331e8e5e5dd8fc3aa7829d46de6b8271f3) ) |
| 3145 | | ROM_LOAD( "snksb5.bin", 0x50000, 0x10000, CRC(f45ee36f) SHA1(cdfdf696e9fcd2827ab1dd6adc2a45085911333d) ) |
| 3146 | | ROM_LOAD( "snksb6.bin", 0x70000, 0x10000, CRC(651c9472) SHA1(bcff6679e22143cd6816c441c5a67b4956ee7ee0) ) |
| 3172 | ROM_REGION( 0x90000, "audiocpu", 0 ) /* Sound CPU */ |
| 3173 | ROM_LOAD( "sb-3.g9", 0x00000, 0x08000, CRC(89e12f25) SHA1(1c569958a7f5a91b54f1316c1d5ee027be8618d6) ) |
| 3174 | ROM_CONTINUE( 0x18000, 0x08000 ) |
| 3175 | ROM_LOAD( "sb-4.g11", 0x30000, 0x10000, CRC(cca2555d) SHA1(13c672331e8e5e5dd8fc3aa7829d46de6b8271f3) ) |
| 3176 | ROM_LOAD( "sb-5.g13", 0x50000, 0x10000, CRC(f45ee36f) SHA1(cdfdf696e9fcd2827ab1dd6adc2a45085911333d) ) |
| 3177 | ROM_LOAD( "sb-6.g15", 0x70000, 0x10000, CRC(651c9472) SHA1(bcff6679e22143cd6816c441c5a67b4956ee7ee0) ) |
| 3147 | 3178 | |
| 3148 | 3179 | ROM_REGION( 0x10000, "mcu", 0 ) |
| 3149 | 3180 | ROM_LOAD( "alpha.mcu", 0x000, 0x1000, NO_DUMP ) |
| 3150 | 3181 | |
| 3151 | | ROM_REGION( 0x10000, "gfx1", 0 ) /* chars */ |
| 3152 | | ROM_LOAD( "snksb7.bin", 0x000000, 0x10000, CRC(8f3c2e25) SHA1(a5b3880f3079cce607678fd4ea5971560ce9ed8d) ) |
| 3182 | ROM_REGION( 0x10000, "gfx1", 0 ) /* chars */ |
| 3183 | ROM_LOAD( "sb-7.l3", 0x000000, 0x10000, CRC(8f3c2e25) SHA1(a5b3880f3079cce607678fd4ea5971560ce9ed8d) ) |
| 3153 | 3184 | |
| 3154 | | ROM_REGION( 0x280000, "gfx2", 0 ) /* sprites */ |
| 3155 | | ROM_LOAD( "kcbchr3.bin", 0x000000, 0x80000, CRC(719071c7) SHA1(47eded73eae25af04cf369f1a8ee657fd06b6480) ) |
| 3156 | | ROM_LOAD( "kcbchr2.bin", 0x0a0000, 0x80000, CRC(014f0f90) SHA1(e80594f06faf303c4034a711fe55dad046ebf9aa) ) |
| 3157 | | ROM_LOAD( "kcbchr1.bin", 0x140000, 0x80000, CRC(a5ce1e10) SHA1(c91cad45a918166155be3f93f4ed299389579f4a) ) |
| 3158 | | ROM_LOAD( "kcbchr0.bin", 0x1e0000, 0x80000, CRC(b8a1a088) SHA1(cb21a04387431b1810130abd86a2ebf78cf09a3b) ) |
| 3185 | ROM_REGION( 0x280000, "gfx2", 0 ) /* sprites */ |
| 3186 | ROM_LOAD( "kcb-chr3.h21", 0x000000, 0x80000, CRC(719071c7) SHA1(47eded73eae25af04cf369f1a8ee657fd06b6480) ) |
| 3187 | ROM_LOAD( "kcb-chr2.h19", 0x0a0000, 0x80000, CRC(014f0f90) SHA1(e80594f06faf303c4034a711fe55dad046ebf9aa) ) |
| 3188 | ROM_LOAD( "kcb-chr1.h18", 0x140000, 0x80000, CRC(a5ce1e10) SHA1(c91cad45a918166155be3f93f4ed299389579f4a) ) |
| 3189 | ROM_LOAD( "kcb-chr0.h16", 0x1e0000, 0x80000, CRC(b8a1a088) SHA1(cb21a04387431b1810130abd86a2ebf78cf09a3b) ) |
| 3159 | 3190 | ROM_END |
| 3160 | 3191 | |
| 3192 | ROM_START( sbasebalj ) |
| 3193 | ROM_REGION( 0x40000, "maincpu", 0 ) |
| 3194 | ROM_LOAD16_BYTE( "sb-j-1.c19", 0x00000, 0x20000, CRC(c46a3c03) SHA1(51d22f2873e45ae64453f3003940b3871d065c5b) ) |
| 3195 | ROM_LOAD16_BYTE( "sb-j-2.e19", 0x00001, 0x20000, CRC(a8ec2287) SHA1(9c873f3388a00babc1cd38188ef1fe6e2741fd67) ) |
| 3196 | |
| 3197 | ROM_REGION( 0x90000, "audiocpu", 0 ) /* Sound CPU */ |
| 3198 | ROM_LOAD( "sb-3.g9", 0x00000, 0x08000, CRC(89e12f25) SHA1(1c569958a7f5a91b54f1316c1d5ee027be8618d6) ) |
| 3199 | ROM_CONTINUE( 0x18000, 0x08000 ) |
| 3200 | ROM_LOAD( "sb-4.g11", 0x30000, 0x10000, CRC(cca2555d) SHA1(13c672331e8e5e5dd8fc3aa7829d46de6b8271f3) ) |
| 3201 | ROM_LOAD( "sb-5.g13", 0x50000, 0x10000, CRC(f45ee36f) SHA1(cdfdf696e9fcd2827ab1dd6adc2a45085911333d) ) |
| 3202 | ROM_LOAD( "sb-6.g15", 0x70000, 0x10000, CRC(651c9472) SHA1(bcff6679e22143cd6816c441c5a67b4956ee7ee0) ) |
| 3203 | |
| 3204 | ROM_REGION( 0x10000, "mcu", 0 ) |
| 3205 | ROM_LOAD( "alpha.mcu", 0x000, 0x1000, NO_DUMP ) |
| 3206 | |
| 3207 | ROM_REGION( 0x10000, "gfx1", 0 ) /* chars */ |
| 3208 | ROM_LOAD( "sb-7.l3", 0x000000, 0x10000, CRC(8f3c2e25) SHA1(a5b3880f3079cce607678fd4ea5971560ce9ed8d) ) |
| 3209 | |
| 3210 | ROM_REGION( 0x280000, "gfx2", 0 ) /* sprites */ |
| 3211 | ROM_LOAD( "kcb-chr3.h21", 0x000000, 0x80000, CRC(719071c7) SHA1(47eded73eae25af04cf369f1a8ee657fd06b6480) ) |
| 3212 | ROM_LOAD( "kcb-chr2.h19", 0x0a0000, 0x80000, CRC(014f0f90) SHA1(e80594f06faf303c4034a711fe55dad046ebf9aa) ) |
| 3213 | ROM_LOAD( "kcb-chr1.h18", 0x140000, 0x80000, CRC(a5ce1e10) SHA1(c91cad45a918166155be3f93f4ed299389579f4a) ) |
| 3214 | ROM_LOAD( "kcb-chr0.h16", 0x1e0000, 0x80000, CRC(b8a1a088) SHA1(cb21a04387431b1810130abd86a2ebf78cf09a3b) ) |
| 3215 | ROM_END |
| 3216 | |
| 3161 | 3217 | ROM_START( tnextspc ) /* MASKROM for gfx */ |
| 3162 | 3218 | ROM_REGION( 0x40000, "maincpu", 0 ) |
| 3163 | 3219 | ROM_LOAD16_BYTE( "ns_4.bin", 0x00000, 0x20000, CRC(4617cba3) SHA1(615a1e67fc1c76d2be004b19a965f423b8daaf5c) ) |
| r245580 | r245581 | |
| 3375 | 3431 | rom[0x458/2] = 0x4e71; |
| 3376 | 3432 | rom[0x45a/2] = 0x4e71; |
| 3377 | 3433 | |
| 3378 | | #if SBASEBAL_HACK |
| 3379 | | rom[0x2b4/2] = 0x4e71; |
| 3380 | | rom[0x2b6/2] = 0x4e71; |
| 3381 | | #endif |
| 3434 | m_invert_controls = 0; |
| 3435 | m_microcontroller_id = 0x8512; // Same as 'gangwars' ? |
| 3436 | m_coin_id = 0x23 | (0x24 << 8); |
| 3437 | m_game_id = 0; |
| 3438 | } |
| 3382 | 3439 | |
| 3440 | DRIVER_INIT_MEMBER(alpha68k_state,sbasebalj) |
| 3441 | { |
| 3383 | 3442 | m_invert_controls = 0; |
| 3384 | 3443 | m_microcontroller_id = 0x8512; // Same as 'gangwars' ? |
| 3385 | 3444 | m_coin_id = 0x23 | (0x24 << 8); |
| r245580 | r245581 | |
| 3429 | 3488 | GAME( 1989, gangwarsb, gangwars, alpha68k_V, gangwars, alpha68k_state, gangwars, ROT0, "bootleg", "Gang Wars (bootleg)", GAME_SUPPORTS_SAVE ) // has (undumped) 68705 MCU in place of Alpha MCU, otherwise the same as 'gangwars' |
| 3430 | 3489 | |
| 3431 | 3490 | GAME( 1989, sbasebal, 0, alpha68k_V_sb, sbasebal, alpha68k_state, sbasebal, ROT0, "Alpha Denshi Co. (SNK of America license)", "Super Champion Baseball (US)", GAME_SUPPORTS_SAVE | GAME_UNEMULATED_PROTECTION ) |
| 3491 | GAME( 1989, sbasebalj, sbasebal, alpha68k_V_sb, sbasebalj,alpha68k_state, sbasebalj,ROT0, "Alpha Denshi Co.", "Super Champion Baseball (Japan)", GAME_SUPPORTS_SAVE | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING ) |
| 3432 | 3492 | |
| 3433 | 3493 | GAME( 1989, tnextspc, 0, tnextspc, tnextspc, alpha68k_state, tnextspc, ROT90, "SNK", "The Next Space (set 1)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL ) |
| 3434 | 3494 | GAME( 1989, tnextspc2, tnextspc, tnextspc, tnextspc, alpha68k_state, tnextspc, ROT90, "SNK", "The Next Space (set 2)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL ) |