Previous 199869 Revisions Next

r31918 Friday 5th September, 2014 at 14:39:39 UTC by Robbbert
inder.c : WIP
[src/mame/drivers]inder.c

trunk/src/mame/drivers/inder.c
r31917r31918
3131#include "machine/i8255.h"
3232#include "sound/sn76496.h"
3333#include "sound/ay8910.h"
34#include "sound/msm5205.h"
35#include "machine/7474.h"
3436#include "inder.lh"
3537
3638class inder_state : public genpin_class
r31917r31918
4143      , m_maincpu(*this, "maincpu")
4244      , m_audiocpu(*this, "audiocpu")
4345      , m_sn(*this, "sn")
46      , m_msm(*this, "msm")
47      , m_7a(*this, "7a")
48      , m_9a(*this, "9a")
49      , m_9b(*this, "9b")
4450      , m_switches(*this, "SW")
4551   { }
4652
53   DECLARE_READ8_MEMBER(ppic_r);
54   DECLARE_WRITE8_MEMBER(ppia_w);
55   DECLARE_WRITE8_MEMBER(ppib_w);
56   DECLARE_WRITE8_MEMBER(ppic_w);
4757   DECLARE_WRITE8_MEMBER(ppi60a_w);
4858   DECLARE_WRITE8_MEMBER(ppi60b_w);
4959   DECLARE_WRITE8_MEMBER(ppi64c_w);
r31917r31918
5363   DECLARE_WRITE8_MEMBER(sol_canasta_w);
5464   DECLARE_WRITE8_MEMBER(sn_w);
5565   DECLARE_READ8_MEMBER(sndcmd_r);
66   DECLARE_WRITE8_MEMBER(sndbank_w);
5667   DECLARE_WRITE8_MEMBER(sndcmd_w);
5768   DECLARE_WRITE8_MEMBER(sndcmd_lapbylap_w);
5869   DECLARE_WRITE8_MEMBER(lamp_w) { };
5970   DECLARE_WRITE8_MEMBER(disp_w);
71   DECLARE_WRITE_LINE_MEMBER(vck_w);
72   DECLARE_WRITE_LINE_MEMBER(qc7a_w);
73   DECLARE_WRITE_LINE_MEMBER(q9a_w);
74   DECLARE_WRITE_LINE_MEMBER(qc9b_w);
6075   DECLARE_DRIVER_INIT(inder);
6176private:
77   bool m_pc0;
78   UINT8 m_portc;
6279   UINT8 m_row;
6380   UINT8 m_segment[8];
6481   UINT8 m_sndcmd;
82   UINT32 m_sound_addr;
83   UINT8 *m_p_speech;
6584   virtual void machine_reset();
6685   required_device<cpu_device> m_maincpu;
6786   optional_device<cpu_device> m_audiocpu;
6887   optional_device<sn76489_device> m_sn;
88   optional_device<msm5205_device> m_msm;
89   optional_device<ttl7474_device> m_7a;
90   optional_device<ttl7474_device> m_9a;
91   optional_device<ttl7474_device> m_9b;
6992   required_ioport_array<11> m_switches;
7093};
7194
r31917r31918
130153   AM_RANGE(0x0000, 0x1fff) AM_ROM
131154   AM_RANGE(0x2000, 0x27ff) AM_MIRROR(0x1800) AM_RAM // 6116
132155   AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("ppi", i8255_device, read, write)
133   AM_RANGE(0x6000, 0x6000) AM_WRITENOP //(sndctl_w) enable sound data roms
156   AM_RANGE(0x6000, 0x6000) AM_WRITE(sndbank_w)
134157   AM_RANGE(0x8000, 0x8000) AM_READ(sndcmd_r)
135158ADDRESS_MAP_END
136159
r31917r31918
621644   }
622645}
623646
624WRITE8_MEMBER(inder_state::ppi60a_w)
647WRITE8_MEMBER( inder_state::ppi60a_w )
625648{
626649   if (data)
627650      for (UINT8 i = 0; i < 8; i++)
r31917r31918
630653}
631654
632655// always 0 but we'll support it anyway
633WRITE8_MEMBER(inder_state::ppi60b_w)
656WRITE8_MEMBER( inder_state::ppi60b_w )
634657{
635658   if (data & 7)
636659      for (UINT8 i = 0; i < 3; i++)
r31917r31918
638661            m_row = i+8;
639662}
640663
641WRITE8_MEMBER(inder_state::ppi64c_w)
664WRITE8_MEMBER( inder_state::ppi64c_w )
642665{
643666   UINT8 i;
644667   data &= 15;
r31917r31918
650673   }
651674}
652675
676WRITE8_MEMBER( inder_state::sndbank_w )
677{
678   UINT8 i;
679   // look for last rom enabled
680   for (i = 0; i < 2; i++)
681      if (!(BIT(data, i)))
682         m_sound_addr = (m_sound_addr & 0x0ffff) | (i << 16);
683}
684
685WRITE_LINE_MEMBER( inder_state::vck_w )
686{
687   m_9a->clock_w(0);
688   m_9b->clock_w(0);
689   m_9a->clock_w(1);
690   m_9b->clock_w(1);
691   if (!m_pc0)
692      m_msm->data_w(m_p_speech[m_sound_addr] & 15);
693   else
694      m_msm->data_w(m_p_speech[m_sound_addr] >> 4);
695}
696
697WRITE_LINE_MEMBER( inder_state::qc7a_w )
698{
699   m_msm->reset_w(state);
700   m_9a->clear_w(!state);
701   m_9b->clear_w(!state);
702}
703
704WRITE_LINE_MEMBER( inder_state::q9a_w )
705{
706   m_pc0 = state;
707}
708
709WRITE_LINE_MEMBER( inder_state::qc9b_w )
710{
711   m_9a->d_w(state);
712   m_9b->d_w(state);
713}
714
715READ8_MEMBER( inder_state::ppic_r )
716{
717   return m_pc0 | m_portc;
718}
719
720WRITE8_MEMBER( inder_state::ppia_w )
721{
722   m_sound_addr = (m_sound_addr & 0x3ff00) | data;
723}
724
725WRITE8_MEMBER( inder_state::ppib_w )
726{
727//   data &= 0x7f;
728//   m_sound_addr = (m_sound_addr & 0x380ff) | (data << 8);
729   m_sound_addr = (m_sound_addr & 0x300ff) | (data << 8);
730}
731
732WRITE8_MEMBER( inder_state::ppic_w )
733{
734   // pc4 - READY line back to cpu board, but not used
735   if (BIT(data, 5) != BIT(m_portc, 5))
736      m_msm->set_prescaler_selector(m_msm, BIT(data, 5) ? MSM5205_S48_4B : MSM5205_S96_4B); // S1 pin
737   m_7a->clock_w(BIT(data, 6));
738   m_7a->preset_w(!BIT(data, 7));
739   m_9a->preset_w(!BIT(data, 7));
740   m_portc = data & 0xfe;
741}
742
743
653744void inder_state::machine_reset()
654745{
746   m_sound_addr = 0;
655747   m_row = 0;
748   if (m_7a)
749      m_7a->clear_w(1);
656750}
657751
658752DRIVER_INIT_MEMBER( inder_state, inder )
659753{
754   m_p_speech = memregion("speech")->base();
755   if (m_7a)
756   {
757      m_7a->d_w(0);
758      m_7a->clear_w(0);
759      m_9b->preset_w(1);
760   }
660761}
661762
662763static MACHINE_CONFIG_START( brvteam, inder_state )
r31917r31918
735836
736837   /* Sound */
737838   MCFG_FRAGMENT_ADD( genpin_audio )
839   MCFG_SPEAKER_STANDARD_MONO("msmvol")
840   MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz)
841   MCFG_MSM5205_VCLK_CB(WRITELINE(inder_state, vck_w))
842   MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B)      /* 4KHz 4-bit */
843   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "msmvol", 1.0)
738844
739845   /* Devices */
740846   MCFG_DEVICE_ADD("ppi60", I8255A, 0 )
r31917r31918
771877
772878   MCFG_DEVICE_ADD("ppi", I8255A, 0 )
773879   //MCFG_I8255_IN_PORTA_CB(READ8(inder_state, ppia_r))
774   //MCFG_I8255_OUT_PORTA_CB(WRITE8(inder_state, ppia_w))
880   MCFG_I8255_OUT_PORTA_CB(WRITE8(inder_state, ppia_w))
775881   //MCFG_I8255_IN_PORTB_CB(READ8(inder_state, ppib_r))
776   //MCFG_I8255_OUT_PORTB_CB(WRITE8(inder_state, ppib_w))
777   //MCFG_I8255_IN_PORTC_CB(READ8(inder_state, ppic_r))
778   //MCFG_I8255_OUT_PORTC_CB(WRITE8(inder_state, ppic_w))
882   MCFG_I8255_OUT_PORTB_CB(WRITE8(inder_state, ppib_w))
883   MCFG_I8255_IN_PORTC_CB(READ8(inder_state, ppic_r))
884   MCFG_I8255_OUT_PORTC_CB(WRITE8(inder_state, ppic_w))
885
886   MCFG_DEVICE_ADD("7a", TTL7474, 0)
887   MCFG_7474_COMP_OUTPUT_CB(WRITELINE(inder_state, qc7a_w))
888
889   MCFG_DEVICE_ADD("9a", TTL7474, 0)
890   MCFG_7474_OUTPUT_CB(WRITELINE(inder_state, q9a_w))
891
892   MCFG_DEVICE_ADD("9b", TTL7474, 0)
893   MCFG_7474_COMP_OUTPUT_CB(WRITELINE(inder_state, qc9b_w))
779894MACHINE_CONFIG_END
780895
781896
r31917r31918
819934   ROM_REGION(0x2000, "audiocpu", 0)
820935   ROM_LOAD("ci-11.bin", 0x0000, 0x2000, CRC(a0732fe4) SHA1(54f62cd81bdb7e1924acb67ddbe43eb3d0a4eab0))
821936
822   ROM_REGION(0x40000, "user1", 0)
937   ROM_REGION(0x40000, "speech", 0)
823938   ROM_LOAD("ci-24.bin", 0x00000, 0x10000, CRC(6406bd18) SHA1(ae45ed9e8b1fd278a36a68b780352dbbb6ee781e))
824939   ROM_LOAD("ci-23.bin", 0x10000, 0x10000, CRC(eac346da) SHA1(7c4c26ae089dda0dcd7300fd1ecabf5a91099c41))
825940   ROM_LOAD("ci-22.bin", 0x20000, 0x10000, CRC(379740da) SHA1(83ad13ab7f1f37c78397d8e830bd74c5a7aea758))
r31917r31918
836951   ROM_REGION(0x2000, "audiocpu", 0)
837952   ROM_LOAD("clown_b.bin", 0x0000, 0x2000, CRC(81a66302) SHA1(3d1243ae878747f20e54cd3322c5a54ded45ce21))
838953
839   ROM_REGION(0x40000, "user1", 0)
954   ROM_REGION(0x40000, "speech", 0)
840955   ROM_LOAD("clown_c.bin", 0x00000, 0x10000, CRC(dff89319) SHA1(3745a02c3755d11ea7fb552f7a5df2e8bbee2c29))
841956   ROM_LOAD("clown_d.bin", 0x10000, 0x10000, CRC(cce4e1dc) SHA1(561c9331d2d110d34cf250cd7b25be16a72a1d79))
842957   ROM_LOAD("clown_e.bin", 0x20000, 0x10000, CRC(98263526) SHA1(509764e65847637824ba93f7e6ce926501c431ce))
r31917r31918
853968   ROM_REGION(0x2000, "audiocpu", 0)
854969   ROM_LOAD("a-corsar.bin", 0x0000, 0x2000, CRC(e14b7918) SHA1(5a5fc308b0b70fe041b81071ba4820782b6ff988))
855970
856   ROM_REGION(0x40000, "user1", 0)
971   ROM_REGION(0x40000, "speech", 0)
857972   ROM_LOAD("b-corsar.bin", 0x00000, 0x10000, CRC(7f155828) SHA1(e459c81b2c2e47d4276344d8d6a08c2c6242f941))
858973   ROM_LOAD("c-corsar.bin", 0x10000, 0x10000, CRC(047fd722) SHA1(2385507459f85c68141adc7084cb51dfa02462f6))
859974   ROM_LOAD("d-corsar.bin", 0x20000, 0x10000, CRC(10d8b448) SHA1(ed1918e6c55eba07dde31b9755c9403e073cad98))
r31917r31918
870985   ROM_REGION(0x2000, "audiocpu", 0)
871986   ROM_LOAD("snd11.bin", 0x0000, 0x2000, CRC(2cebc1a5) SHA1(e0dae2b1ce31ff436b55ceb1ec71d39fc56694da))
872987
873   ROM_REGION(0x40000, "user1", 0)
988   ROM_REGION(0x40000, "speech", 0)
874989   ROM_LOAD("snd24.bin", 0x00000, 0x10000, CRC(603bfc3c) SHA1(8badd9731243270ce5b8003373ed09ec7eac6ca6))
875990   ROM_LOAD("snd23.bin", 0x10000, 0x10000, CRC(2868ce6f) SHA1(317457763f764be08cbe6a5dd4008ba2257c9d78))
876991   ROM_LOAD("snd22.bin", 0x20000, 0x10000, CRC(2559f874) SHA1(cbf57f29e394d5dc320e7dcbd2625f6c96412a06))
r31917r31918
8881003   ROM_REGION(0x2000, "audiocpu", 0)
8891004   ROM_LOAD("atletaa.snd", 0x0000, 0x2000, CRC(051c5329) SHA1(339115af4a2e3f1f2c31073cbed1842518d5916e))
8901005
891   ROM_REGION(0x40000, "user1", 0)
1006   ROM_REGION(0x40000, "speech", 0)
8921007   ROM_LOAD("atletab.snd", 0x00000, 0x10000, CRC(7f155828) SHA1(e459c81b2c2e47d4276344d8d6a08c2c6242f941))
8931008   ROM_LOAD("atletac.snd", 0x10000, 0x10000, CRC(20456363) SHA1(b226400dac35dedc039a7e03cb525c6033b24ebc))
8941009   ROM_LOAD("atletad.snd", 0x20000, 0x10000, CRC(6518e3a4) SHA1(6b1d852005dabb76c7c65b87ecc9ee1422f16737))
r31917r31918
9051020   ROM_REGION(0x2000, "audiocpu", 0)
9061021   ROM_LOAD("a-250cc.bin", 0x0000, 0x2000, CRC(b64bdafb) SHA1(eab6d54d34b44187d454c1999e4bcf455183d5a0))
9071022
908   ROM_REGION(0x40000, "user1", 0)
1023   ROM_REGION(0x40000, "speech", 0)
9091024   ROM_LOAD("b-250cc.bin", 0x00000, 0x10000, CRC(884c31c8) SHA1(23a838f1f0cb4905fa8552579b5452134f0fc9cc))
9101025   ROM_LOAD("c-250cc.bin", 0x10000, 0x10000, CRC(5a1dfa1d) SHA1(4957431d87be0bb6d27910b718f7b7edcd405fff))
9111026   ROM_LOAD("d-250cc.bin", 0x20000, 0x10000, CRC(a0940387) SHA1(0e06483e3e823bf4673d8e0bd120b0a6b802035d))
r31917r31918
9231038   ROM_REGION(0x2000, "audiocpu", 0)
9241039   ROM_LOAD("sound_e1.bin", 0x0000, 0x2000, CRC(55e889e8) SHA1(0a240868c1b17762588c0ed9a14f568a6e50f409))
9251040
926   ROM_REGION(0x80000, "user1", 0)
1041   ROM_REGION(0x80000, "speech", 0)
9271042   ROM_LOAD("sound_e2.bin", 0x00000, 0x20000, CRC(5ac61535) SHA1(75b9a805f8639554251192e3777073c29952c78f))
9281043
9291044   ROM_REGION(0x10000, "soundcpu2", 0)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team