summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/mame/drivers/blmbycar.cpp37
-rw-r--r--src/mame/drivers/namcos21.cpp10
-rw-r--r--src/mame/machine/namcoic.cpp1
3 files changed, 30 insertions, 18 deletions
diff --git a/src/mame/drivers/blmbycar.cpp b/src/mame/drivers/blmbycar.cpp
index cf1883f561b..059a5f05f8c 100644
--- a/src/mame/drivers/blmbycar.cpp
+++ b/src/mame/drivers/blmbycar.cpp
@@ -14,10 +14,12 @@ Sound Chips : K-665 9546 (= M6295)
To Do:
- Flip screen unused ?
-- Better driving wheel(s) support
+- Better driving wheel(s) support, merge with World Rally implementation
Blomby Car is said to be a bootleg of Gaelco's World Rally and uses many
of the same fonts
+(Update: it actually is a bootleg of World Rally by looking how much
+similar the two HWs are, down to the dipswitches!)
Waterball
@@ -65,7 +67,7 @@ WRITE16_MEMBER(blmbycar_state::okibank_w)
WRITE16_MEMBER(blmbycar_state::blmbycar_pot_wheel_reset_w)
{
if (ACCESSING_BITS_0_7)
- m_pot_wheel = ~ioport("WHEEL")->read() & 0xff;
+ m_pot_wheel = ioport("POT_WHEEL")->read() & 0xff;
}
WRITE16_MEMBER(blmbycar_state::blmbycar_pot_wheel_shift_w)
@@ -88,7 +90,7 @@ READ16_MEMBER(blmbycar_state::blmbycar_pot_wheel_r)
READ16_MEMBER(blmbycar_state::blmbycar_opt_wheel_r)
{
- return (~ioport("WHEEL")->read() & 0xff) << 8;
+ return ((ioport("OPT_WHEEL")->read() & 0xff) << 8) | 0xff;
}
@@ -128,8 +130,8 @@ void blmbycar_state::blmbycar_map(address_map &map)
map(0x700006, 0x700007).portr("UNK");
map(0x700008, 0x700009).r(this, FUNC(blmbycar_state::blmbycar_pot_wheel_r)); // Wheel (potentiometer)
map(0x70000a, 0x70000b).nopw(); // ? Wheel
- map(0x70006a, 0x70006b).w(this, FUNC(blmbycar_state::blmbycar_pot_wheel_reset_w)); // Wheel (potentiometer)
- map(0x70007a, 0x70007b).w(this, FUNC(blmbycar_state::blmbycar_pot_wheel_shift_w)); //
+ map(0x70006a, 0x70006b).nopr().w(this, FUNC(blmbycar_state::blmbycar_pot_wheel_reset_w)); // Wheel (potentiometer)
+ map(0x70007a, 0x70007b).nopr().w(this, FUNC(blmbycar_state::blmbycar_pot_wheel_shift_w)); //
}
READ16_MEMBER(blmbycar_state::waterball_unk_r)
@@ -174,8 +176,8 @@ static INPUT_PORTS_START( blmbycar )
PORT_DIPSETTING( 0x0004, "2" )
PORT_DIPNAME( 0x0018, 0x0018, DEF_STR( Controls ) ) PORT_DIPLOCATION("SW1:5,4")
PORT_DIPSETTING( 0x0018, DEF_STR( Joystick ) )
-// PORT_DIPSETTING( 0x0010, "Pot Wheel" ) // Preliminary
-// PORT_DIPSETTING( 0x0008, "Opt Wheel" ) // Preliminary
+ PORT_DIPSETTING( 0x0010, "Pot Wheel" ) // Preliminary
+ PORT_DIPSETTING( 0x0008, "Opt Wheel" ) // Preliminary
// PORT_DIPSETTING( 0x0000, DEF_STR( Unused ) ) // Time goes to 0 rally fast!
PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
@@ -211,12 +213,14 @@ static INPUT_PORTS_START( blmbycar )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_START("P1_P2") /* $700002.w */
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_CONDITION("DSW", 0x18, EQUALS, 0x18)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_CONDITION("DSW", 0x18, EQUALS, 0x18)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_CONDITION("DSW", 0x18, EQUALS, 0x18)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_CONDITION("DSW", 0x18, EQUALS, 0x18)
+ PORT_BIT( 0x000f, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_CONDITION("DSW", 0x18, NOTEQUALS, 0x18)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Gear Shift") PORT_TOGGLE PORT_CONDITION("DSW", 0x18, NOTEQUALS, 0x18)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_CONDITION("DSW", 0x18, EQUALS, 0x18)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Accelerator")
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_COIN2 )
@@ -229,8 +233,11 @@ static INPUT_PORTS_START( blmbycar )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START2 )
- PORT_START("WHEEL") /* $700004.w */
- PORT_BIT ( 0x00ff, 0x0080, IPT_AD_STICK_X ) PORT_SENSITIVITY(30) PORT_KEYDELTA(1)
+ PORT_START("OPT_WHEEL") /* $700004.w */
+ PORT_BIT ( 0x00ff, 0x0000, IPT_DIAL ) PORT_SENSITIVITY(30) PORT_KEYDELTA(1) PORT_REVERSE PORT_CONDITION("DSW", 0x18, EQUALS, 0x08) PORT_NAME("P1 Opt Wheel")
+
+ PORT_START("POT_WHEEL")
+ PORT_BIT ( 0x00ff, 0x0080, IPT_AD_STICK_X ) PORT_SENSITIVITY(30) PORT_KEYDELTA(1) PORT_REVERSE PORT_CONDITION("DSW", 0x18, EQUALS, 0x10) PORT_NAME("P1 Pot Wheel")
PORT_START("UNK") /* $700006.w */
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
diff --git a/src/mame/drivers/namcos21.cpp b/src/mame/drivers/namcos21.cpp
index 1f4aefdef3a..1cf3743fe9f 100644
--- a/src/mame/drivers/namcos21.cpp
+++ b/src/mame/drivers/namcos21.cpp
@@ -685,6 +685,10 @@ void namcos21_state::transfer_dsp_data()
else
{
int primWords = (uint16_t)read_pointrom_data(subAddr++);
+ // TODO: this function causes an IDC overflow in Solvalou, something else failed prior to that?
+ // In Header TFR when bad parameters happens there's a suspicious 0x000f 0x0003 as first two words,
+ // maybe it's supposed to have a different length there ...
+ // cfr: object code 0x17 in service mode
if( primWords>2 )
{
transmit_word_to_slave(0); /* pad1 */
@@ -2790,10 +2794,10 @@ GAME( 1988, winrun, 0, winrun, winrun, namcos21_state, winrun,
GAME( 1989, winrungp, 0, winrun, winrungp, namcos21_state, winrun, ROT0, "Namco", "Winning Run Suzuka Grand Prix (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN )
GAME( 1991, winrun91, 0, winrun, winrungp, namcos21_state, winrun, ROT0, "Namco", "Winning Run '91 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN )
GAME( 1991, driveyes, 0, driveyes, driveyes, namcos21_state, driveyes, ROT0, "Namco", "Driver's Eyes (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN)
-GAME( 1991, solvalou, 0, namcos21, s21default, namcos21_state, solvalou, ROT0, "Namco", "Solvalou (Japan)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1991, solvalou, 0, namcos21, s21default, namcos21_state, solvalou, ROT0, "Namco", "Solvalou (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
GAME( 1991, starblad, 0, namcos21, starblad, namcos21_state, starblad, ROT0, "Namco", "Starblade (World)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1991, starbladj, starblad, namcos21, starblad, namcos21_state, starblad, ROT0, "Namco", "Starblade (Japan)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1992, aircomb, 0, namcos21, aircomb, namcos21_state, aircomb, ROT0, "Namco", "Air Combat (US)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) // There's code for a SCI, is it even possible to play multiplayer?
GAME( 1992, aircombj, aircomb, namcos21, aircomb, namcos21_state, aircomb, ROT0, "Namco", "Air Combat (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1993, cybsled, 0, namcos21, cybsled, namcos21_state, cybsled, ROT0, "Namco", "Cyber Sled (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN )
-GAME( 1993, cybsledj, cybsled, namcos21, cybsled, namcos21_state, cybsled, ROT0, "Namco", "Cyber Sled (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN )
+GAME( 1993, cybsled, 0, namcos21, cybsled, namcos21_state, cybsled, ROT0, "Namco", "Cyber Sled (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN | MACHINE_NOT_WORKING )
+GAME( 1993, cybsledj, cybsled, namcos21, cybsled, namcos21_state, cybsled, ROT0, "Namco", "Cyber Sled (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN | MACHINE_NOT_WORKING )
diff --git a/src/mame/machine/namcoic.cpp b/src/mame/machine/namcoic.cpp
index 292e22f02de..e5469defe3e 100644
--- a/src/mame/machine/namcoic.cpp
+++ b/src/mame/machine/namcoic.cpp
@@ -820,6 +820,7 @@ void namcos2_shared_state::c355_obj_draw(screen_device &screen, bitmap_ind16 &bi
screen.priority().fill(0, cliprect);
// if (offs == 0) // boot
+ // TODO: solvalou service mode wants 0x14000/2 & 0x00000/2
c355_obj_draw_list(screen, bitmap, cliprect, pri, &m_c355_obj_ram[0x02000/2], &m_c355_obj_ram[0x00000/2]);
// else
c355_obj_draw_list(screen, bitmap, cliprect, pri, &m_c355_obj_ram[0x14000/2], &m_c355_obj_ram[0x10000/2]);