summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/alpha68k.c
diff options
context:
space:
mode:
author mamehaze <mamehaze@users.noreply.github.com>2015-04-05 19:40:14 +0100
committer mamehaze <mamehaze@users.noreply.github.com>2015-04-05 19:40:14 +0100
commit9808d1f0c995036fc782d5bdd10921f909c65b2e (patch)
treee1d4da995b5b751cf364048df7f51a24df070a36 /src/mame/drivers/alpha68k.c
parent212aff689f715da12af5c659c2eace80576478ad (diff)
new clones
Super Champion Baseball (Japan) [Manuel Assoni] (marked not working because I haven't checked the hacks for the MCU error for this set, IMHO parent should be marked as not working too, MCU sim is inaccurate and won't give correct ball speeds)
Diffstat (limited to 'src/mame/drivers/alpha68k.c')
-rw-r--r--src/mame/drivers/alpha68k.c154
1 files changed, 107 insertions, 47 deletions
diff --git a/src/mame/drivers/alpha68k.c b/src/mame/drivers/alpha68k.c
index 7f6ca6de772..0ed2ca81ba8 100644
--- a/src/mame/drivers/alpha68k.c
+++ b/src/mame/drivers/alpha68k.c
@@ -110,18 +110,7 @@ Stephh's additional notes (based on the games M68000 code and some tests) :
- There is no Dip Switch to determine if you are allowed to continue a game
or not, so you ALWAYS have the possibility to continue a game.
- 9) 'sbasebal'
-
- - IMO, there must exist a Japan version of this game which is currently
- undumped ! Set the SBASEBAL_HACK to 1 and you'll notice the following
- differences :
-
- * different manufacturer (no more SNK license)
- * different coinage (check code at 0x00035c) and additional COIN2
- * different game time (check code at 0x001d20)
- * different table for "Unknown" Dip Switch
-
-
+
Stephh's log (2002.06.19) :
- Create macros for players inputs and "Coinage" Dip Switch
@@ -204,7 +193,7 @@ DIP locations verified from manuals for:
#include "sound/2203intf.h"
#include "includes/alpha68k.h"
-#define SBASEBAL_HACK 0
+
/******************************************************************************/
@@ -1457,11 +1446,8 @@ static INPUT_PORTS_START( sbasebal )
PORT_START("IN2") /* Coin input to microcontroller */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
-#if SBASEBAL_HACK
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
-#else
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // COIN2 - unused due to code at 0x0002b4
-#endif
+
PORT_START("IN3") /* Service + dip */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
@@ -1481,17 +1467,11 @@ static INPUT_PORTS_START( sbasebal )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0xc0, 0x80, DEF_STR( Game_Time ) )
-#if SBASEBAL_HACK
- PORT_DIPSETTING( 0x00, "4:30" )
- PORT_DIPSETTING( 0x80, "4:00" )
- PORT_DIPSETTING( 0x40, "3:30" )
- PORT_DIPSETTING( 0xc0, "3:00" )
-#else
PORT_DIPSETTING( 0x00, "3:30" )
PORT_DIPSETTING( 0x80, "3:00" )
PORT_DIPSETTING( 0x40, "2:30" )
PORT_DIPSETTING( 0xc0, "2:00" )
-#endif
+
PORT_START("IN4") /* A 6 way dip switch */
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) // Check code at 0x009d3a
@@ -1499,9 +1479,6 @@ static INPUT_PORTS_START( sbasebal )
PORT_DIPSETTING( 0x03, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x01, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
-#if SBASEBAL_HACK
- ALPHA68K_COINAGE_BITS_2TO4
-#else
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coinage ) )
PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) )
@@ -1510,13 +1487,67 @@ static INPUT_PORTS_START( sbasebal )
PORT_DIPNAME( 0x10, 0x00, "Price to Continue" )
PORT_DIPSETTING( 0x10, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x00, "Same as Start" )
-#endif
+
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
+INPUT_PORTS_END
+
+
+
+static INPUT_PORTS_START( sbasebalj )
+ PORT_START("IN0")
+ ALPHA68K_PLAYER_INPUT_LSB( 1, IPT_BUTTON3, IPT_START1, IP_ACTIVE_LOW )
+
+ PORT_START("IN1")
+ ALPHA68K_PLAYER_INPUT_LSB( 2, IPT_BUTTON3, IPT_START2, IP_ACTIVE_LOW )
+
+ PORT_START("IN2") /* Coin input to microcontroller */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
+
+
+ PORT_START("IN3") /* Service + dip */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
+ PORT_SERVICE_NO_TOGGLE(0x02, IP_ACTIVE_LOW)
+
+ /* 2 physical sets of _6_ dip switches */
+ PORT_DIPNAME( 0x04, 0x04, "Freeze" )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Flip_Screen ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) // Check code at 0x0089e6
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0xc0, 0x80, DEF_STR( Game_Time ) )
+ PORT_DIPSETTING( 0x00, "4:30" )
+ PORT_DIPSETTING( 0x80, "4:00" )
+ PORT_DIPSETTING( 0x40, "3:30" )
+ PORT_DIPSETTING( 0xc0, "3:00" )
+
+
+ PORT_START("IN4") /* A 6 way dip switch */
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) // Check code at 0x009d3a
+ PORT_DIPSETTING( 0x02, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Hard ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
+ ALPHA68K_COINAGE_BITS_2TO4
+
PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
+
+
static INPUT_PORTS_START( tnextspc )
PORT_START("P1")
ALPHA68K_PLAYER_INPUT_LSB( 1, IPT_UNKNOWN, IPT_START1, IP_ACTIVE_LOW )
@@ -3135,27 +3166,52 @@ ROM_END
ROM_START( sbasebal )
ROM_REGION( 0x40000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "snksb1.bin", 0x00000, 0x20000, CRC(304fef2d) SHA1(03154e590807f7fd009068b403e1ea039272029d) )
- ROM_LOAD16_BYTE( "snksb2.bin", 0x00001, 0x20000, CRC(35821339) SHA1(2c4303bf799de7cb364cadac44ff28306088e2f4) )
+ ROM_LOAD16_BYTE( "snksb1.c19", 0x00000, 0x20000, CRC(304fef2d) SHA1(03154e590807f7fd009068b403e1ea039272029d) )
+ ROM_LOAD16_BYTE( "snksb2.e19", 0x00001, 0x20000, CRC(35821339) SHA1(2c4303bf799de7cb364cadac44ff28306088e2f4) )
- ROM_REGION( 0x90000, "audiocpu", 0 ) /* Sound CPU */
- ROM_LOAD( "snksb3.bin", 0x00000, 0x08000, CRC(89e12f25) SHA1(1c569958a7f5a91b54f1316c1d5ee027be8618d6) )
- ROM_CONTINUE( 0x18000, 0x08000 )
- ROM_LOAD( "snksb4.bin", 0x30000, 0x10000, CRC(cca2555d) SHA1(13c672331e8e5e5dd8fc3aa7829d46de6b8271f3) )
- ROM_LOAD( "snksb5.bin", 0x50000, 0x10000, CRC(f45ee36f) SHA1(cdfdf696e9fcd2827ab1dd6adc2a45085911333d) )
- ROM_LOAD( "snksb6.bin", 0x70000, 0x10000, CRC(651c9472) SHA1(bcff6679e22143cd6816c441c5a67b4956ee7ee0) )
+ ROM_REGION( 0x90000, "audiocpu", 0 ) /* Sound CPU */
+ ROM_LOAD( "sb-3.g9", 0x00000, 0x08000, CRC(89e12f25) SHA1(1c569958a7f5a91b54f1316c1d5ee027be8618d6) )
+ ROM_CONTINUE( 0x18000, 0x08000 )
+ ROM_LOAD( "sb-4.g11", 0x30000, 0x10000, CRC(cca2555d) SHA1(13c672331e8e5e5dd8fc3aa7829d46de6b8271f3) )
+ ROM_LOAD( "sb-5.g13", 0x50000, 0x10000, CRC(f45ee36f) SHA1(cdfdf696e9fcd2827ab1dd6adc2a45085911333d) )
+ ROM_LOAD( "sb-6.g15", 0x70000, 0x10000, CRC(651c9472) SHA1(bcff6679e22143cd6816c441c5a67b4956ee7ee0) )
ROM_REGION( 0x10000, "mcu", 0 )
ROM_LOAD( "alpha.mcu", 0x000, 0x1000, NO_DUMP )
- ROM_REGION( 0x10000, "gfx1", 0 ) /* chars */
- ROM_LOAD( "snksb7.bin", 0x000000, 0x10000, CRC(8f3c2e25) SHA1(a5b3880f3079cce607678fd4ea5971560ce9ed8d) )
+ ROM_REGION( 0x10000, "gfx1", 0 ) /* chars */
+ ROM_LOAD( "sb-7.l3", 0x000000, 0x10000, CRC(8f3c2e25) SHA1(a5b3880f3079cce607678fd4ea5971560ce9ed8d) )
- ROM_REGION( 0x280000, "gfx2", 0 ) /* sprites */
- ROM_LOAD( "kcbchr3.bin", 0x000000, 0x80000, CRC(719071c7) SHA1(47eded73eae25af04cf369f1a8ee657fd06b6480) )
- ROM_LOAD( "kcbchr2.bin", 0x0a0000, 0x80000, CRC(014f0f90) SHA1(e80594f06faf303c4034a711fe55dad046ebf9aa) )
- ROM_LOAD( "kcbchr1.bin", 0x140000, 0x80000, CRC(a5ce1e10) SHA1(c91cad45a918166155be3f93f4ed299389579f4a) )
- ROM_LOAD( "kcbchr0.bin", 0x1e0000, 0x80000, CRC(b8a1a088) SHA1(cb21a04387431b1810130abd86a2ebf78cf09a3b) )
+ ROM_REGION( 0x280000, "gfx2", 0 ) /* sprites */
+ ROM_LOAD( "kcb-chr3.h21", 0x000000, 0x80000, CRC(719071c7) SHA1(47eded73eae25af04cf369f1a8ee657fd06b6480) )
+ ROM_LOAD( "kcb-chr2.h19", 0x0a0000, 0x80000, CRC(014f0f90) SHA1(e80594f06faf303c4034a711fe55dad046ebf9aa) )
+ ROM_LOAD( "kcb-chr1.h18", 0x140000, 0x80000, CRC(a5ce1e10) SHA1(c91cad45a918166155be3f93f4ed299389579f4a) )
+ ROM_LOAD( "kcb-chr0.h16", 0x1e0000, 0x80000, CRC(b8a1a088) SHA1(cb21a04387431b1810130abd86a2ebf78cf09a3b) )
+ROM_END
+
+ROM_START( sbasebalj )
+ ROM_REGION( 0x40000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "sb-j-1.c19", 0x00000, 0x20000, CRC(c46a3c03) SHA1(51d22f2873e45ae64453f3003940b3871d065c5b) )
+ ROM_LOAD16_BYTE( "sb-j-2.e19", 0x00001, 0x20000, CRC(a8ec2287) SHA1(9c873f3388a00babc1cd38188ef1fe6e2741fd67) )
+
+ ROM_REGION( 0x90000, "audiocpu", 0 ) /* Sound CPU */
+ ROM_LOAD( "sb-3.g9", 0x00000, 0x08000, CRC(89e12f25) SHA1(1c569958a7f5a91b54f1316c1d5ee027be8618d6) )
+ ROM_CONTINUE( 0x18000, 0x08000 )
+ ROM_LOAD( "sb-4.g11", 0x30000, 0x10000, CRC(cca2555d) SHA1(13c672331e8e5e5dd8fc3aa7829d46de6b8271f3) )
+ ROM_LOAD( "sb-5.g13", 0x50000, 0x10000, CRC(f45ee36f) SHA1(cdfdf696e9fcd2827ab1dd6adc2a45085911333d) )
+ ROM_LOAD( "sb-6.g15", 0x70000, 0x10000, CRC(651c9472) SHA1(bcff6679e22143cd6816c441c5a67b4956ee7ee0) )
+
+ ROM_REGION( 0x10000, "mcu", 0 )
+ ROM_LOAD( "alpha.mcu", 0x000, 0x1000, NO_DUMP )
+
+ ROM_REGION( 0x10000, "gfx1", 0 ) /* chars */
+ ROM_LOAD( "sb-7.l3", 0x000000, 0x10000, CRC(8f3c2e25) SHA1(a5b3880f3079cce607678fd4ea5971560ce9ed8d) )
+
+ ROM_REGION( 0x280000, "gfx2", 0 ) /* sprites */
+ ROM_LOAD( "kcb-chr3.h21", 0x000000, 0x80000, CRC(719071c7) SHA1(47eded73eae25af04cf369f1a8ee657fd06b6480) )
+ ROM_LOAD( "kcb-chr2.h19", 0x0a0000, 0x80000, CRC(014f0f90) SHA1(e80594f06faf303c4034a711fe55dad046ebf9aa) )
+ ROM_LOAD( "kcb-chr1.h18", 0x140000, 0x80000, CRC(a5ce1e10) SHA1(c91cad45a918166155be3f93f4ed299389579f4a) )
+ ROM_LOAD( "kcb-chr0.h16", 0x1e0000, 0x80000, CRC(b8a1a088) SHA1(cb21a04387431b1810130abd86a2ebf78cf09a3b) )
ROM_END
ROM_START( tnextspc ) /* MASKROM for gfx */
@@ -3375,11 +3431,14 @@ DRIVER_INIT_MEMBER(alpha68k_state,sbasebal)
rom[0x458/2] = 0x4e71;
rom[0x45a/2] = 0x4e71;
-#if SBASEBAL_HACK
- rom[0x2b4/2] = 0x4e71;
- rom[0x2b6/2] = 0x4e71;
-#endif
+ m_invert_controls = 0;
+ m_microcontroller_id = 0x8512; // Same as 'gangwars' ?
+ m_coin_id = 0x23 | (0x24 << 8);
+ m_game_id = 0;
+}
+DRIVER_INIT_MEMBER(alpha68k_state,sbasebalj)
+{
m_invert_controls = 0;
m_microcontroller_id = 0x8512; // Same as 'gangwars' ?
m_coin_id = 0x23 | (0x24 << 8);
@@ -3429,6 +3488,7 @@ GAME( 1989, gangwarsu, gangwars, alpha68k_V, gangwarsu, alpha68k_state,gangw
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'
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 )
+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 )
GAME( 1989, tnextspc, 0, tnextspc, tnextspc, alpha68k_state, tnextspc, ROT90, "SNK", "The Next Space (set 1)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
GAME( 1989, tnextspc2, tnextspc, tnextspc, tnextspc, alpha68k_state, tnextspc, ROT90, "SNK", "The Next Space (set 2)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )