summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/segas24.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/segas24.cpp')
-rw-r--r--src/mame/drivers/segas24.cpp161
1 files changed, 87 insertions, 74 deletions
diff --git a/src/mame/drivers/segas24.cpp b/src/mame/drivers/segas24.cpp
index f799504c4e8..49e8e95c0ea 100644
--- a/src/mame/drivers/segas24.cpp
+++ b/src/mame/drivers/segas24.cpp
@@ -1157,6 +1157,11 @@ void segas24_state::hotrod_cpu1_map(address_map &map)
hotrod_common_map(map);
}
+void segas24_state::dcclubj_cpu1_map(address_map &map)
+{
+ rombd_cpu1_map(map);
+ roughrac_common_map(map);
+}
/*************************************
*
@@ -1188,6 +1193,12 @@ void segas24_state::hotrod_cpu2_map(address_map &map)
hotrod_common_map(map);
}
+void segas24_state::dcclubj_cpu2_map(address_map &map)
+{
+ rombd_cpu2_map(map);
+ roughrac_common_map(map);
+}
+
void segas24_state::decrypted_opcodes_map(address_map &map)
{
map(0x00000, 0xfffff).bankr("fd1094_decrypted_opcodes");
@@ -1566,81 +1577,23 @@ static INPUT_PORTS_START( qsww )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
INPUT_PORTS_END
-static INPUT_PORTS_START( dcclub ) /* In the Japan set missing angle input */
- PORT_INCLUDE( system24_generic )
-
- PORT_MODIFY("P1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
- PORT_DIPNAME( 0x0100, 0x0100, "DSWA" )
- PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-
- PORT_MODIFY("DSW")
- PORT_DIPNAME( 0x01, 0x01, "Start Credit" ) PORT_DIPLOCATION("SW2:1")
- PORT_DIPSETTING( 0x01, "1" )
- PORT_DIPSETTING( 0x00, "2" )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:2")
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:3")
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, "Timing Meter" ) PORT_DIPLOCATION("SW2:4")
- PORT_DIPSETTING( 0x08, DEF_STR( Normal ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Easy ) )
- PORT_DIPNAME( 0x10, 0x10, "Initial Balls" ) PORT_DIPLOCATION("SW2:5")
- PORT_DIPSETTING( 0x00, "1" )
- PORT_DIPSETTING( 0x10, "2" )
- PORT_DIPNAME( 0x20, 0x20, "Balls Limit" ) PORT_DIPLOCATION("SW2:6")
- PORT_DIPSETTING( 0x00, "3" )
- PORT_DIPSETTING( 0x20, "4" )
- PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:7,8")
- PORT_DIPSETTING( 0x80, DEF_STR( Easy ) )
- PORT_DIPSETTING( 0xc0, DEF_STR( Normal ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
-
- PORT_START("PADDLE")
- PORT_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_MINMAX(0x00,0xbf) PORT_SENSITIVITY(64) PORT_KEYDELTA(64) PORT_PLAYER(1)
-INPUT_PORTS_END
static INPUT_PORTS_START( sgmast )
PORT_INCLUDE( system24_generic )
PORT_MODIFY("P1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 Angle Left")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Club")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("P1 Angle Right")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Stance")
/* For select the power shot rotate the stick from up-left (max power) to up (minimum power) and relese */
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_CUSTOM )
+
+ PORT_MODIFY("P2")
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("PADDLE")
+ PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_MINMAX(0x00,0xbf) PORT_SENSITIVITY(16) PORT_KEYDELTA(16) PORT_PLAYER(1) PORT_NAME("P1 Swing")
PORT_MODIFY("DSW")
PORT_DIPNAME( 0x01, 0x01, "Start Credit" ) PORT_DIPLOCATION("SW2:1")
@@ -1667,9 +1620,14 @@ static INPUT_PORTS_START( sgmast )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) // 136% 100% 100%
INPUT_PORTS_END
+// Japanese version has an analog "angle" device in place of the two dedicated buttons
static INPUT_PORTS_START( sgmastj )
PORT_INCLUDE( sgmast )
+ PORT_MODIFY("P1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
+
PORT_MODIFY("DSW")
//"SW2:1" not divert from "sgmast"
//"SW2:2" not divert from "sgmast"
@@ -1681,12 +1639,49 @@ static INPUT_PORTS_START( sgmastj )
//"SW2:8" not divert from "sgmast"
PORT_START("DIAL1")
- PORT_BIT( 0xfff, 0x000, IPT_DIAL ) PORT_MINMAX(0x000,0xfff) PORT_SENSITIVITY(25) PORT_KEYDELTA(15) PORT_RESET PORT_PLAYER(2)
+ PORT_BIT( 0xfff, 0x000, IPT_DIAL ) PORT_MINMAX(0x000,0xfff) PORT_SENSITIVITY(25) PORT_KEYDELTA(15) PORT_RESET PORT_PLAYER(1) PORT_NAME("P1 Angle")
PORT_START("DIAL2")
PORT_BIT( 0xfff, 0x000, IPT_UNUSED )
INPUT_PORTS_END
+static INPUT_PORTS_START( dcclub_dips )
+ PORT_MODIFY("DSW")
+ PORT_DIPNAME( 0x01, 0x01, "Start Credit" ) PORT_DIPLOCATION("SW2:1")
+ PORT_DIPSETTING( 0x01, "1" )
+ PORT_DIPSETTING( 0x00, "2" )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:2")
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Timing Meter" ) PORT_DIPLOCATION("SW2:4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Easy ) )
+ PORT_DIPNAME( 0x10, 0x10, "Initial Balls" ) PORT_DIPLOCATION("SW2:5")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x10, "2" )
+ PORT_DIPNAME( 0x20, 0x20, "Balls Limit" ) PORT_DIPLOCATION("SW2:6")
+ PORT_DIPSETTING( 0x00, "3" )
+ PORT_DIPSETTING( 0x20, "4" )
+ PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:7,8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0xc0, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( dcclub )
+ PORT_INCLUDE( sgmast )
+ PORT_INCLUDE( dcclub_dips )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( dcclubj )
+ PORT_INCLUDE( sgmastj )
+ PORT_INCLUDE( dcclub_dips )
+INPUT_PORTS_END
+
static INPUT_PORTS_START( quizmeku )
PORT_INCLUDE( system24_generic )
@@ -2050,6 +2045,17 @@ void segas24_state::dcclub(machine_config &config)
io.in_pc_callback().set(FUNC(segas24_state::dcclub_p3_r));
}
+void segas24_state::dcclubj(machine_config &config)
+{
+ dcclub(config);
+ m_maincpu->set_addrmap(AS_PROGRAM, &segas24_state::dcclubj_cpu1_map);
+ m_subcpu->set_addrmap(AS_PROGRAM, &segas24_state::dcclubj_cpu2_map);
+
+ upd4701_device &upd4701(UPD4701A(config, "upd4701"));
+ upd4701.set_portx_tag("DIAL1");
+ upd4701.set_porty_tag("DIAL2");
+}
+
void segas24_state::system24_floppy_dcclub(machine_config &config)
{
system24_floppy_fd1094(config);
@@ -2058,6 +2064,13 @@ void segas24_state::system24_floppy_dcclub(machine_config &config)
io.in_pc_callback().set(FUNC(segas24_state::dcclub_p3_r));
}
+void segas24_state::sgmastj(machine_config &config)
+{
+ system24_floppy_fd_upd(config);
+ sega_315_5296_device &io(*subdevice<sega_315_5296_device>("io"));
+ io.in_pa_callback().set(FUNC(segas24_state::dcclub_p1_r));
+ io.in_pc_callback().set(FUNC(segas24_state::dcclub_p3_r));
+}
/*************************************
*
@@ -2559,9 +2572,9 @@ void segas24_state::init_roughrac()
/* 04 */GAME( 1989, crkdown, 0, system24_floppy_fd1094, crkdown, segas24_state, init_crkdown, ROT0, "Sega", "Crack Down (World, Floppy Based, FD1094 317-0058-04c)", MACHINE_IMPERFECT_GRAPHICS ) // clipping probs / solid layer probs? (radar display)
/* 04 */GAME( 1989, crkdownu, crkdown, system24_floppy_fd1094, crkdown, segas24_state, init_crkdown, ROT0, "Sega", "Crack Down (US, Floppy Based, FD1094 317-0058-04d)", MACHINE_IMPERFECT_GRAPHICS ) // clipping probs / solid layer probs? (radar display)
/* 04 */GAME( 1989, crkdownj, crkdown, system24_floppy_fd1094, crkdown, segas24_state, init_crkdown, ROT0, "Sega", "Crack Down (Japan, Floppy Based, FD1094 317-0058-04b Rev A)", MACHINE_IMPERFECT_GRAPHICS ) // clipping probs / solid layer probs? (radar display)
-/* 05 */GAME( 1989, sgmast, 0, system24_floppy_fd1094, sgmast, segas24_state, init_sgmast, ROT0, "Sega", "Super Masters Golf (World?, Floppy Based, FD1094 317-0058-05d?)", 0 )
-/* 05 */GAME( 1989, sgmastc, sgmast, system24_floppy_fd1094, sgmast, segas24_state, init_sgmast, ROT0, "Sega", "Jumbo Ozaki Super Masters Golf (World, Floppy Based, FD1094 317-0058-05c)", MACHINE_IMPERFECT_GRAPHICS ) // some gfx offset / colour probs?
-/* 05 */GAME( 1989, sgmastj, sgmast, system24_floppy_fd_upd, sgmastj, segas24_state, init_sgmast, ROT0, "Sega", "Jumbo Ozaki Super Masters Golf (Japan, Floppy Based, FD1094 317-0058-05b)", MACHINE_IMPERFECT_GRAPHICS ) // some gfx offset / colour probs?
+/* 05 */GAME( 1989, sgmast, 0, system24_floppy_dcclub, sgmast, segas24_state, init_sgmast, ROT0, "Sega", "Super Masters Golf (World?, Floppy Based, FD1094 317-0058-05d?)", 0 )
+/* 05 */GAME( 1989, sgmastc, sgmast, system24_floppy_dcclub, sgmast, segas24_state, init_sgmast, ROT0, "Sega", "Jumbo Ozaki Super Masters Golf (World, Floppy Based, FD1094 317-0058-05c)", MACHINE_IMPERFECT_GRAPHICS ) // some gfx offset / colour probs?
+/* 05 */GAME( 1989, sgmastj, sgmast, sgmastj, sgmastj, segas24_state, init_sgmast, ROT0, "Sega", "Jumbo Ozaki Super Masters Golf (Japan, Floppy Based, FD1094 317-0058-05b)", MACHINE_IMPERFECT_GRAPHICS ) // some gfx offset / colour probs?
/* 06 */GAME( 1990, roughrac, 0, system24_floppy_fd_upd, roughrac, segas24_state, init_roughrac, ROT0, "Sega", "Rough Racer (Japan, Floppy Based, FD1094 317-0058-06b)", 0 )
/* 07 */GAME( 1990, bnzabros, 0, system24_floppy_rom, bnzabros, segas24_state, init_bnzabros, ROT0, "Sega", "Bonanza Bros (US, Floppy DS3-5000-07d? Based)", 0 )
/* 07 */GAME( 1990, bnzabrosj, bnzabros, system24_floppy_rom, bnzabros, segas24_state, init_bnzabros, ROT0, "Sega", "Bonanza Bros (Japan, Floppy DS3-5000-07b Based)", 0 )
@@ -2571,7 +2584,7 @@ void segas24_state::init_roughrac()
// YEAR NAME PARENT MACHINE INPUT CLASS INIT MONITOR COMPANY FULLNAME FLAGS
/* ROM Based */
GAME( 1991, dcclub, 0, dcclub, dcclub, segas24_state, init_dcclub, ROT0, "Sega", "Dynamic Country Club (World, ROM Based)", 0 )
-GAME( 1991, dcclubj, dcclub, dcclub, dcclub, segas24_state, init_dcclub, ROT0, "Sega", "Dynamic Country Club (Japan, ROM Based)", 0 )
+GAME( 1991, dcclubj, dcclub, dcclubj, dcclubj, segas24_state, init_dcclub, ROT0, "Sega", "Dynamic Country Club (Japan, ROM Based)", 0 )
GAME( 1991, qrouka, 0, system24_rom, qrouka, segas24_state, init_qrouka, ROT0, "Sega", "Quiz Rouka Ni Tattenasai (Japan, ROM Based)", 0 )
GAME( 1992, quizmeku, 0, system24_rom, quizmeku, segas24_state, init_quizmeku, ROT0, "Sega", "Quiz Mekurumeku Story (Japan, ROM Based)", 0 ) /* Released in 05.1993 */
GAME( 1992, mahmajn, 0, mahmajn, mahmajn, segas24_state, init_mahmajn, ROT0, "Sega", "Tokoro San no MahMahjan (Japan, ROM Based)", 0 )