diff options
author | 2018-05-09 09:44:06 +0200 | |
---|---|---|
committer | 2018-05-09 09:57:48 +0200 | |
commit | be68e91d80f242ca173ba8009dd8c68dbc4b7b29 (patch) | |
tree | 997b43d5829dade4298c39b745cd1c70a8d03973 /src | |
parent | 04e8d3306fdd99fbea94c671ac4d3bf91b4b97db (diff) |
blmbycar.cpp: added opt and pot wheel input schemes [Angelo Salese]
namcos21.cpp: demoted Solvalou and Cyber Sled to not working, added notes describing the issue (nw)
Diffstat (limited to 'src')
-rw-r--r-- | src/mame/drivers/blmbycar.cpp | 37 | ||||
-rw-r--r-- | src/mame/drivers/namcos21.cpp | 10 | ||||
-rw-r--r-- | src/mame/machine/namcoic.cpp | 1 |
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]); |