Previous 199869 Revisions Next

r31937 Saturday 6th September, 2014 at 01:08:12 UTC by Robbbert
inder.c : Moon Light is working. [Robbbert]
[src/mame/drivers]inder.c

trunk/src/mame/drivers/inder.c
r31936r31937
1515  - Brave Team: working
1616  - Canasta '86: working
1717  - Lap by Lap: working
18  - Moon Light: sound and switches to be fixed
18  - Moon Light: dips don't always work. No mechanical sounds.
1919  - Clown: sound and switches to be fixed
2020  - Corsario: sound and switches to be fixed
2121  - Mundial 90: sound and switches to be fixed
r31936r31937
7373   DECLARE_WRITE_LINE_MEMBER(q9a_w);
7474   DECLARE_WRITE_LINE_MEMBER(qc9b_w);
7575   DECLARE_DRIVER_INIT(inder);
76   DECLARE_DRIVER_INIT(inder1);
7677private:
7778   bool m_pc0;
79   UINT8 m_game;
7880   UINT8 m_portc;
7981   UINT8 m_row;
8082   UINT8 m_segment[8];
8183   UINT8 m_sndcmd;
84   UINT8 m_sndbank;
8285   UINT32 m_sound_addr;
8386   UINT8 *m_p_speech;
8487   virtual void machine_reset();
r31936r31937
147150   AM_RANGE(0x6c00, 0x6c03) AM_MIRROR(0x131c) AM_DEVREADWRITE("ppi6c", i8255_device, read, write)
148151   AM_RANGE(0x6c20, 0x6c3f) AM_MIRROR(0x1300) AM_WRITE(sndcmd_w)
149152   AM_RANGE(0x6c60, 0x6c7f) AM_MIRROR(0x1300) AM_WRITE(disp_w)
153   AM_RANGE(0x6ce0, 0x6ce0) AM_WRITENOP
150154ADDRESS_MAP_END
151155
152156static ADDRESS_MAP_START( inder_sub_map, AS_PROGRAM, 8, inder_state )
r31936r31937
382386   PORT_DIPNAME( 0x40, 0x40, "Bola Extra En Rampa??") //nfi  // sw R
383387   PORT_DIPSETTING(    0x00, "Derribo Completo")
384388   PORT_DIPSETTING(    0x40, "Derribo Lateral")
385   PORT_DIPNAME( 0x80, 0x80, "Apagado??") //nfi  // sw Q
386   PORT_DIPSETTING(    0x00, DEF_STR(Hard)) // "Facil"
387   PORT_DIPSETTING(    0x80, DEF_STR(Easy)) // "Dificil"
389   PORT_DIPNAME( 0x80, 0x80, "Apagado de dianas")  // sw Q
390   PORT_DIPSETTING(    0x80, DEF_STR(Easy)) // "Facil"
391   PORT_DIPSETTING(    0x00, DEF_STR(Hard)) // "Dificil"
388392   PORT_BIT( 0x3c, IP_ACTIVE_LOW, IPT_UNUSED )
389393
390394   PORT_START("SW.3")
r31936r31937
449453
450454static INPUT_PORTS_START( inder )
451455   PORT_START("SW.0")
452   PORT_DIPNAME( 0x03, 0x03, "Coin Slot 1") // sw G,H
453   PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C )) // slot 2: 1 moneda 4 partidas
456   PORT_DIPNAME( 0x80, 0x80, "Balls")
457   PORT_DIPSETTING(    0x80, "3")
458   PORT_DIPSETTING(    0x00, "5")
459   PORT_DIPNAME( 0x30, 0x30, "Coin Slot 1")
460   PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C )) // slot 2: 1 moneda 4 partidas
454461   PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C )) // and 4c_3c; slot 2: 1 moneda 3 partidas
455   PORT_DIPNAME( 0x08, 0x08, "Balls") // sw E
456   PORT_DIPSETTING(    0x08, "3")
457   PORT_DIPSETTING(    0x00, "5")
458   PORT_DIPNAME( 0x30, 0x20, "Points for free game") // sw C,D
459   PORT_DIPSETTING(    0x00, "2900000")
460   PORT_DIPSETTING(    0x10, "2700000")
461   PORT_DIPSETTING(    0x20, "2500000")
462   PORT_DIPSETTING(    0x30, "2300000")
463   PORT_BIT( 0xc4, IP_ACTIVE_LOW, IPT_UNUSED )
462   PORT_DIPNAME( 0x0c, 0x0c, "Points for free game")
463   PORT_DIPSETTING(    0x0c, "2600000")
464   PORT_DIPSETTING(    0x08, "3000000")
465   PORT_DIPSETTING(    0x04, "3400000")
466   PORT_DIPSETTING(    0x00, "3800000")
464467
465468   PORT_START("SW.1")
466   PORT_DIPNAME( 0x03, 0x03, "High Score") //"Handicap"  // sw O,P
467   PORT_DIPSETTING(    0x00, "4600000")
468   PORT_DIPSETTING(    0x01, "4400000")
469   PORT_DIPSETTING(    0x02, "4200000")
470   PORT_DIPSETTING(    0x03, "4000000")
471   PORT_DIPNAME( 0x0c, 0x08, "Extra Ball Award??") //"Comienzo Secuenzia Diana Bola Extra"  // sw M,N
472   PORT_DIPSETTING(    0x04, "50000")
473   PORT_DIPSETTING(    0x08, "25000")
474   PORT_DIPSETTING(    0x0c, "10000")
475   PORT_DIPNAME( 0x10, 0x10, "Extra Ball Derribo??") //"Bola Extra en 1st Derribo Completo"  // sw L
476   PORT_DIPSETTING(    0x00, DEF_STR(No))
477   PORT_DIPSETTING(    0x10, DEF_STR(Yes)) // "Si"
478   PORT_DIPNAME( 0x20, 0x20, "Especiales Laterales??") //need help here guys...  // sw K
479   PORT_DIPSETTING(    0x00, "Derribo Lateral Dianas")
480   PORT_DIPSETTING(    0x20, "Derribo Completo Dianas Laterales")
481   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
469   PORT_DIPNAME( 0x30, 0x30, "High Score") //"Handicap"
470   PORT_DIPSETTING(    0x30, "4800000")
471   PORT_DIPSETTING(    0x20, "5000000")
472   PORT_DIPSETTING(    0x10, "5200000")
473   PORT_DIPSETTING(    0x00, "5400000")
474   PORT_DIPNAME( 0x08, 0x08, "Especial en Picabolas")
475   PORT_DIPSETTING(    0x08, "1st Derribo")
476   PORT_DIPSETTING(    0x00, "2nd Derribo")
477   PORT_DIPNAME( 0x04, 0x04, "Bola Extra En Rampas")
478   PORT_DIPSETTING(    0x04, "4 dianas")
479   PORT_DIPSETTING(    0x00, "2 dianas")
480   PORT_BIT( 0xc3, IP_ACTIVE_LOW, IPT_UNUSED )
482481
483482   PORT_START("SW.2")
484   PORT_DIPNAME( 0x03, 0x03, "High Score Returns??") //"Handicap de Vueltas"  // sw W,X
485   PORT_DIPSETTING(    0x00, "40")
486   PORT_DIPSETTING(    0x01, "35")
487   PORT_DIPSETTING(    0x02, "30")
488   PORT_DIPSETTING(    0x03, "25")
489   PORT_DIPNAME( 0x40, 0x40, "Bola Extra En Rampa??") //nfi  // sw R
490   PORT_DIPSETTING(    0x00, "Derribo Completo")
491   PORT_DIPSETTING(    0x40, "Derribo Lateral")
492   PORT_DIPNAME( 0x80, 0x80, "Apagado??") //nfi  // sw Q
493   PORT_DIPSETTING(    0x00, DEF_STR(Hard)) // "Facil"
494   PORT_DIPSETTING(    0x80, DEF_STR(Easy)) // "Dificil"
495   PORT_BIT( 0x3c, IP_ACTIVE_LOW, IPT_UNUSED )
483   PORT_DIPNAME( 0x30, 0x30, "High Score Returns??") //"Handicap de Vueltas"
484   PORT_DIPSETTING(    0x30, "20")
485   PORT_DIPSETTING(    0x20, "25")
486   PORT_DIPSETTING(    0x10, "30")
487   PORT_DIPSETTING(    0x00, "35")
488   PORT_DIPNAME( 0x01, 0x01, "Apagado de dianas")
489   PORT_DIPSETTING(    0x01, DEF_STR(Easy)) // "Facil"
490   PORT_DIPSETTING(    0x00, DEF_STR(Hard)) // "Dificil"
491   PORT_BIT( 0xce, IP_ACTIVE_LOW, IPT_UNUSED )
496492
497493   PORT_START("SW.3")
498494   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) // "Monedero A"
r31936r31937
511507   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_R)
512508   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Y)
513509   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_U)
514   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
510   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_I)
515511   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_O)
516512
517513   PORT_START("SW.5")
518514   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_A)
519515   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_S)
520   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_D)
521   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_F)
516   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D)
517   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F)
522518   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_G)
523519   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_H)
524520   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_J)
r31936r31937
669665   {
670666      data ^= 15; // now 7 to 0
671667      for (i = 0; i < 5; i++)
668      {
669         if ((m_game==1) && (i == 4))  // mundial,clown,250cc,atleta have credit and ball displays swapped
670            data ^= 4;
672671         output_set_digit_value(i*10+data, m_segment[i]);
672      }
673673   }
674674}
675675
676676WRITE8_MEMBER( inder_state::sndbank_w )
677677{
678   m_sndbank = data;
678679   UINT8 i;
679680   // look for last rom enabled
680   for (i = 0; i < 2; i++)
681   for (i = 0; i < 4; i++)
681682      if (!(BIT(data, i)))
682683         m_sound_addr = (m_sound_addr & 0x0ffff) | (i << 16);
683684}
r31936r31937
688689   m_9b->clock_w(0);
689690   m_9a->clock_w(1);
690691   m_9b->clock_w(1);
691   if (!m_pc0)
692      m_msm->data_w(m_p_speech[m_sound_addr] & 15);
692
693   if ((m_sound_addr < 0x40000) && (m_sndbank != 0xff))
694   {
695      if (!m_pc0)
696         m_msm->data_w(m_p_speech[m_sound_addr] & 15);
697      else
698         m_msm->data_w(m_p_speech[m_sound_addr] >> 4);
699   }
693700   else
694      m_msm->data_w(m_p_speech[m_sound_addr] >> 4);
701      m_msm->data_w(0);
695702}
696703
697704WRITE_LINE_MEMBER( inder_state::qc7a_w )
r31936r31937
724731
725732WRITE8_MEMBER( inder_state::ppib_w )
726733{
727//   data &= 0x7f;
728//   m_sound_addr = (m_sound_addr & 0x380ff) | (data << 8);
729734   m_sound_addr = (m_sound_addr & 0x300ff) | (data << 8);
730735}
731736
r31936r31937
744749void inder_state::machine_reset()
745750{
746751   m_sound_addr = 0;
752   m_sndbank = 0xff;
747753   m_row = 0;
748754   if (m_7a)
749755      m_7a->clear_w(1);
r31936r31937
758764      m_7a->clear_w(0);
759765      m_9b->preset_w(1);
760766   }
767   m_game = 0;
761768}
762769
770DRIVER_INIT_MEMBER( inder_state, inder1 )
771{
772   m_p_speech = memregion("speech")->base();
773   if (m_7a)
774   {
775      m_7a->d_w(0);
776      m_7a->clear_w(0);
777      m_9b->preset_w(1);
778   }
779   m_game = 1;
780}
781
763782static MACHINE_CONFIG_START( brvteam, inder_state )
764783   /* basic machine hardware */
765784   MCFG_CPU_ADD("maincpu", Z80, XTAL_5MHz / 2)
r31936r31937
10511070
10521071
10531072// old cpu board, 6 digits, sn76489
1054GAME(1985,  brvteam,    0,    brvteam,  brvteam,  inder_state, inder,  ROT0, "Inder", "Brave Team",         GAME_MECHANICAL)
1073GAME(1985,  brvteam,    0,    brvteam,  brvteam,  driver_device, 0,    ROT0, "Inder", "Brave Team",         GAME_MECHANICAL)
10551074
10561075// old cpu board, 7 digits, ay8910
1057GAME(1986,  canasta,    0,    canasta,  canasta,  inder_state, inder,  ROT0, "Inder", "Canasta '86'",       GAME_MECHANICAL)
1076GAME(1986,  canasta,    0,    canasta,  canasta,  driver_device, 0,    ROT0, "Inder", "Canasta '86'",       GAME_MECHANICAL)
10581077
10591078// old cpu board, 7 digits, sound cpu with 2x ay8910
1060GAME(1986,  lapbylap,   0,    lapbylap, lapbylap, inder_state, inder,  ROT0, "Inder", "Lap By Lap",         GAME_MECHANICAL)
1079GAME(1986,  lapbylap,   0,    lapbylap, lapbylap, driver_device, 0,    ROT0, "Inder", "Lap By Lap",         GAME_MECHANICAL)
10611080
10621081// new cpu board, sound board with msm5205
1063GAME(1987,  pinmoonl,   0,    inder,    inder,    inder_state, inder,  ROT0, "Inder", "Moon Light (Inder)", GAME_IS_SKELETON_MECHANICAL)
1064GAME(1988,  pinclown,   0,    inder,    inder,    inder_state, inder,  ROT0, "Inder", "Clown (Inder)",      GAME_IS_SKELETON_MECHANICAL)
1065GAME(1989,  corsario,   0,    inder,    inder,    inder_state, inder,  ROT0, "Inder", "Corsario",           GAME_IS_SKELETON_MECHANICAL)
1066GAME(1990,  mundial,    0,    inder,    inder,    inder_state, inder,  ROT0, "Inder", "Mundial 90",         GAME_IS_SKELETON_MECHANICAL)
1067GAME(1991,  atleta,     0,    inder,    inder,    inder_state, inder,  ROT0, "Inder", "Atleta",             GAME_IS_SKELETON_MECHANICAL)
1068GAME(1992,  ind250cc,   0,    inder,    inder,    inder_state, inder,  ROT0, "Inder", "250 CC",             GAME_IS_SKELETON_MECHANICAL)
1082GAME(1987,  pinmoonl,   0,    inder,    inder,    inder_state, inder,  ROT0, "Inder", "Moon Light (Inder)", GAME_MECHANICAL)
1083GAME(1988,  pinclown,   0,    inder,    inder,    inder_state, inder1, ROT0, "Inder", "Clown (Inder)",      GAME_IS_SKELETON_MECHANICAL)
1084GAME(1989,  corsario,   0,    inder,    inder,    inder_state, inder1, ROT0, "Inder", "Corsario",           GAME_IS_SKELETON_MECHANICAL)
1085GAME(1990,  mundial,    0,    inder,    inder,    inder_state, inder1, ROT0, "Inder", "Mundial 90",         GAME_IS_SKELETON_MECHANICAL)
1086GAME(1991,  atleta,     0,    inder,    inder,    inder_state, inder1, ROT0, "Inder", "Atleta",             GAME_IS_SKELETON_MECHANICAL)
1087GAME(1992,  ind250cc,   0,    inder,    inder,    inder_state, inder1, ROT0, "Inder", "250 CC",             GAME_IS_SKELETON_MECHANICAL)
1088
1089// new cpu board, later revision of msm5205 sound board
10691090GAME(1992,  metalman,   0,    inder,    inder,    inder_state, inder,  ROT0, "Inder", "Metal Man",          GAME_IS_SKELETON_MECHANICAL)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team