Previous 199869 Revisions Next

r23868 Saturday 22nd June, 2013 at 22:47:55 UTC by hap
some misc fixes/cleanups
I didn't touch DSP or video stuff
[src/mame/drivers]plygonet.c
[src/mame/includes]plygonet.h

trunk/src/mame/includes/plygonet.h
r23867r23868
1111public:
1212   polygonet_state(const machine_config &mconfig, device_type type, const char *tag)
1313      : driver_device(mconfig, type, tag),
14      m_shared_ram(*this, "shared_ram"),
15      m_dsp56k_p_mirror(*this, "dsp56k_p_mirror"),
16      m_dsp56k_p_8000(*this, "dsp56k_p_8000"),
1714      m_maincpu(*this, "maincpu"),
18      m_soundcpu(*this, "soundcpu"),
15      m_audiocpu(*this, "audiocpu"),
1916      m_dsp(*this, "dsp"),
2017      m_eeprom(*this, "eeprom"),
21      m_k053936(*this, "k053936") { }
18      m_k053936(*this, "k053936"),
19      m_shared_ram(*this, "shared_ram"),
20      m_dsp56k_p_mirror(*this, "dsp56k_p_mirror"),
21      m_dsp56k_p_8000(*this, "dsp56k_p_8000")
22   { }
2223
24   required_device<cpu_device> m_maincpu;
25   required_device<cpu_device> m_audiocpu;
26   required_device<cpu_device> m_dsp;
27   required_device<eeprom_device> m_eeprom;
28   required_device<k053936_device> m_k053936;
29
2330   /* 68k-side shared ram */
2431   required_shared_ptr<UINT32> m_shared_ram;
2532
2633   required_shared_ptr<UINT16> m_dsp56k_p_mirror;
2734   required_shared_ptr<UINT16> m_dsp56k_p_8000;
28   int m_cur_sound_region;
35   ioport_port *m_inputs[4];
36   UINT8 m_sys0;
37   UINT8 m_sys1;
38   UINT8 m_sound_bank;
2939
3040   direct_update_delegate m_dsp56k_update_handler;
3141
r23867r23868
4252   UINT16 m_dsp56k_bank02_ram[2 * 8 * dsp56k_bank02_size];
4353   UINT16 m_dsp56k_shared_ram_16[2 * 8 * dsp56k_shared_ram_16_size];
4454   UINT16 m_dsp56k_bank04_ram[2 * 8 * dsp56k_bank04_size];
45   DECLARE_WRITE32_MEMBER(polygonet_eeprom_w);
46   DECLARE_READ32_MEMBER(ttl_rom_r);
47   DECLARE_READ32_MEMBER(psac_rom_r);
48   DECLARE_READ32_MEMBER(sound_r);
49   DECLARE_WRITE32_MEMBER(sound_w);
55
56   DECLARE_WRITE8_MEMBER(polygonet_sys_w);
57   DECLARE_READ8_MEMBER(polygonet_inputs_r);
58   DECLARE_READ8_MEMBER(sound_comms_r);
59   DECLARE_WRITE8_MEMBER(sound_comms_w);
5060   DECLARE_WRITE32_MEMBER(sound_irq_w);
5161   DECLARE_READ32_MEMBER(dsp_host_interface_r);
5262   DECLARE_WRITE32_MEMBER(shared_ram_write);
r23867r23868
7181   DECLARE_READ32_MEMBER(polygonet_roz_ram_r);
7282   DECLARE_WRITE32_MEMBER(polygonet_roz_ram_w);
7383   DIRECT_UPDATE_MEMBER(plygonet_dsp56k_direct_handler);
74   DECLARE_READ32_MEMBER(polygonet_eeprom_r);
7584   DECLARE_DRIVER_INIT(polygonet);
7685   TILE_GET_INFO_MEMBER(ttl_get_tile_info);
7786   TILE_GET_INFO_MEMBER(roz_get_tile_info);
7887   TILEMAP_MAPPER_MEMBER(plygonet_scan);
7988   TILEMAP_MAPPER_MEMBER(plygonet_scan_cols);
89   virtual void machine_reset();
8090   virtual void machine_start();
8191   virtual void video_start();
8292   UINT32 screen_update_polygonet(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
8393   INTERRUPT_GEN_MEMBER(polygonet_interrupt);
84   INTERRUPT_GEN_MEMBER(audio_interrupt);
85   void reset_sound_region();
86   required_device<cpu_device> m_maincpu;
87   required_device<cpu_device> m_soundcpu;
88   required_device<cpu_device> m_dsp;
89   required_device<eeprom_device> m_eeprom;
90   required_device<k053936_device> m_k053936;
9194};
trunk/src/mame/drivers/plygonet.c
r23867r23868
5050    5c0000-5fffff = UNUSED
5151
5252
53    SYS (Write only?)
54    =================
55
56    D28 = /FIXKILL     - Disable 'FIX' layer?
57    D27 = MUTE
58    D26 = EEPROM CLK
59    D25 = EEPROM CS
60    D24 = EEPROM DATA
61    D23 = BRMAS        - 68k bus error mask
62    D22 = L7MAS        - L7 interrupt mask (unusued - should always be '1')
63    D21 = /L5MAS       - L5 interrupt mask/acknowledge
64    D20 = L3MAS        - L3 interrupt mask
65    D19 = VFLIP        - Flip video vertically
66    D18 = HFLIP        - Flip video horizontally
67    D17 = COIN2        - Coin counter 2
68    D16 = COIN1        - Coin counter 1
69
70
7153    DSP
7254    ===
7355
r23867r23868
9274
9375static const eeprom_interface eeprom_intf =
9476{
95   7,              /* address bits */
96   8,              /* data bits */
97   "011000",       /* read command */
98   "010100",       /* write command */
99   "0100100000000",/* erase command */
100   "0100000000000",/* lock command */
101   "0100110000000" /* unlock command */
77   9,               // address bits
78   8,               // data bits
79   "*110",          // read command
80   "*101",          // write command
81   "*111",          // erase command
82   "*10000xxxxxxx", // lock command
83   "*10011xxxxxxx", // unlock command
84   1,
85   0
86//  "*10001xxxxxxx", // write all
87//  "*10010xxxxxxx"  // erase all
10288};
10389
104READ32_MEMBER(polygonet_state::polygonet_eeprom_r)
90READ8_MEMBER(polygonet_state::polygonet_inputs_r)
10591{
106   if (ACCESSING_BITS_0_15)
107   {
108      return 0x0200 | (m_eeprom->read_bit() << 8);
109   }
110   else
111   {
112      UINT8 lowInputBits = ioport("IN1")->read();
113      UINT8 highInputBits = ioport("IN0")->read();
114      return ((highInputBits << 24) | (lowInputBits << 16));
115   }
116
117   logerror("unk access to eeprom port (mask %x)\n", mem_mask);
118   return 0;
92   return m_inputs[offset]->read();
11993}
12094
12195
122WRITE32_MEMBER(polygonet_state::polygonet_eeprom_w)
96WRITE8_MEMBER(polygonet_state::polygonet_sys_w)
12397{
124   if (ACCESSING_BITS_24_31)
98   switch (offset)
12599   {
126      ioport("EEPROMOUT")->write(data, 0xffffffff);
127      return;
100      case 0:
101      /*
102         D28 = /FIXKILL     - Disable 'FIX' layer?
103         D27 = MUTE
104         D26 = EEPROM CLK
105         D25 = EEPROM CS
106         D24 = EEPROM DATA
107       */
108         m_eeprom->write_bit(data & 1);
109         m_eeprom->set_cs_line((data & 2) ? CLEAR_LINE : ASSERT_LINE);
110         m_eeprom->set_clock_line((data & 4) ? ASSERT_LINE : CLEAR_LINE);
111         
112         m_sys0 = data;
113         break;
114     
115      case 1:
116      /*
117         D23 = BRMAS        - 68k bus error mask
118         D22 = L7MAS        - L7 interrupt mask (unused - should always be '1')
119         D21 = /L5MAS       - L5 interrupt mask/acknowledge (vblank)
120         D20 = L3MAS        - L3 interrupt mask (network)
121         D19 = VFLIP        - Flip video vertically
122         D18 = HFLIP        - Flip video horizontally
123         D17 = COIN2        - Coin counter 2
124         D16 = COIN1        - Coin counter 1
125      */
126         coin_counter_w(machine(), 0, data & 1);
127         coin_counter_w(machine(), 1, data & 2);
128         
129         if (~data & 0x20)
130            m_maincpu->set_input_line(M68K_IRQ_5, CLEAR_LINE);
131         
132         m_sys1 = data;
133         break;
134     
135      default:
136         break;
128137   }
129
130   logerror("unknown write %x (mask %x) to eeprom\n", data, mem_mask);
131138}
132139
133/* TTL tile readback for ROM test */
134READ32_MEMBER(polygonet_state::ttl_rom_r)
135{
136   UINT32 *ROM;
137   ROM = (UINT32 *)memregion("gfx1")->base();
138140
139   return ROM[offset];
140}
141
142/* PSAC2 tile readback for ROM test */
143READ32_MEMBER(polygonet_state::psac_rom_r)
144{
145   UINT32 *ROM;
146   ROM = (UINT32 *)memregion("gfx2")->base();
147
148   return ROM[offset];
149}
150
151141/* irqs 3, 5, and 7 have valid vectors                */
152142/* irq 3 is network.  don't generate if you don't emulate the network h/w! */
153143/* irq 5 is vblank */
154144/* irq 7 does nothing (it jsrs to a rts and then rte) */
155145INTERRUPT_GEN_MEMBER(polygonet_state::polygonet_interrupt)
156146{
157   device.execute().set_input_line(M68K_IRQ_5, HOLD_LINE);
147   if (m_sys1 & 0x20)
148      device.execute().set_input_line(M68K_IRQ_5, ASSERT_LINE);
158149}
159150
160151/* sound CPU communications */
161READ32_MEMBER(polygonet_state::sound_r)
152READ8_MEMBER(polygonet_state::sound_comms_r)
162153{
163   int latch = soundlatch3_byte_r(space, 0);
164
165   if ((latch == 0xd) || (latch == 0xe)) latch = 0xf;  /* hack: until 54539 NMI disable found */
166
167   return latch<<8;
154   switch (offset)
155   {
156      case 0:
157         // unknown
158         return 0;
159     
160      case 2:
161         return soundlatch_byte_r(space, 0);
162     
163      default:
164         break;
165   }
166   
167   return 0;
168168}
169169
170WRITE32_MEMBER(polygonet_state::sound_w)
170WRITE8_MEMBER(polygonet_state::sound_comms_w)
171171{
172   if (ACCESSING_BITS_8_15)
172   switch (offset)
173173   {
174      soundlatch_byte_w(space, 0, (data>>8)&0xff);
174      case 0:
175         // unknown
176         break;
177     
178      case 2:
179         soundlatch2_byte_w(space, 0, data);
180         break;
181     
182      case 3:
183         soundlatch3_byte_w(space, 0, data);
184         break;
185     
186      default:
187         break;
175188   }
176   else
177   {
178      soundlatch2_byte_w(space, 0, data&0xff);
179   }
180189}
181190
182191WRITE32_MEMBER(polygonet_state::sound_irq_w)
183192{
184   m_soundcpu->set_input_line(0, HOLD_LINE);
193   m_audiocpu->set_input_line(0, HOLD_LINE); // where is ack?
185194}
186195
187196/* DSP communications */
r23867r23868
256265   {
257266//      logerror("RESET ASSERTED\n");
258267      m_dsp->set_input_line(DSP56K_IRQ_RESET, ASSERT_LINE);
259
260      /* A little hacky - I can't seem to set these lines anywhere else where reset is asserted, so i do it here */
261      m_dsp->set_input_line(DSP56K_IRQ_MODA, ASSERT_LINE);
262      m_dsp->set_input_line(DSP56K_IRQ_MODB, CLEAR_LINE);
263268   }
264269
265270   /* 0x04000000 is the COMBNK line - it switches who has access to the shared RAM - the dsp or the 68020 */
r23867r23868
503508   AM_RANGE(0x200000, 0x21ffff) AM_RAM_WRITE(plygonet_palette_w) AM_SHARE("paletteram")
504509   AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE16_LEGACY("k053936", k053936_ctrl_r, k053936_ctrl_w, 0xffffffff)
505510   AM_RANGE(0x440000, 0x440fff) AM_READWRITE(polygonet_roz_ram_r, polygonet_roz_ram_w)
506   AM_RANGE(0x480000, 0x4bffff) AM_READ(polygonet_eeprom_r)
507   AM_RANGE(0x4C0000, 0x4fffff) AM_WRITE(polygonet_eeprom_w)
511   AM_RANGE(0x480000, 0x480003) AM_READ8(polygonet_inputs_r, 0xffffffff)
512   AM_RANGE(0x4c0000, 0x4c0003) AM_WRITE8(polygonet_sys_w, 0xffffffff)
508513   AM_RANGE(0x500000, 0x503fff) AM_RAM_WRITE(shared_ram_write) AM_SHARE("shared_ram")
509514   AM_RANGE(0x504000, 0x504003) AM_WRITE(dsp_w_lines)
510515   AM_RANGE(0x506000, 0x50600f) AM_READWRITE(dsp_host_interface_r, dsp_host_interface_w)
r23867r23868
512517   AM_RANGE(0x541000, 0x54101f) AM_RAM
513518   AM_RANGE(0x580000, 0x5807ff) AM_RAM
514519   AM_RANGE(0x580800, 0x580803) AM_READ(network_r) AM_WRITENOP /* network RAM | registers? */
515   AM_RANGE(0x600004, 0x600007) AM_WRITE(sound_w)
516   AM_RANGE(0x600008, 0x60000b) AM_READ(sound_r)
520   AM_RANGE(0x600004, 0x600007) AM_WRITE8(sound_comms_w, 0xffffffff)
521   AM_RANGE(0x600008, 0x60000b) AM_READ8(sound_comms_r, 0xffffffff)
517522   AM_RANGE(0x640000, 0x640003) AM_WRITE(sound_irq_w)
518523   AM_RANGE(0x680000, 0x680003) AM_WRITE(watchdog_reset32_w)
519   AM_RANGE(0x700000, 0x73ffff) AM_READ(psac_rom_r)
520   AM_RANGE(0x780000, 0x79ffff) AM_READ(ttl_rom_r)
524   AM_RANGE(0x700000, 0x73ffff) AM_ROM AM_REGION("gfx2", 0)
525   AM_RANGE(0x780000, 0x79ffff) AM_ROM AM_REGION("gfx1", 0)
521526   AM_RANGE(0xff8000, 0xffffff) AM_RAM
522527ADDRESS_MAP_END
523528
r23867r23868
540545
541546/**********************************************************************************/
542547
543void polygonet_state::reset_sound_region()
544{
545   membank("bank2")->set_base(memregion("soundcpu")->base() + 0x10000 + m_cur_sound_region*0x4000);
546}
547548
548549WRITE8_MEMBER(polygonet_state::sound_bankswitch_w)
549550{
550   m_cur_sound_region = (data & 0x1f);
551   reset_sound_region();
551   // d0-d2: bank
552   // higher bits: ? (only used in plygonet)
553   if ((m_sound_bank & 7) != (data & 7))
554      membank("bank1")->set_entry(data & 7);
555   
556   m_sound_bank = data;
552557}
553558
554INTERRUPT_GEN_MEMBER(polygonet_state::audio_interrupt)
555{
556   device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
557}
558559
560
559561static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, polygonet_state )
560562   AM_RANGE(0x0000, 0x7fff) AM_ROM
561   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2")
562   AM_RANGE(0x0000, 0xbfff) AM_WRITENOP
563   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
563564   AM_RANGE(0xc000, 0xdfff) AM_RAM
564565   AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539_1", k054539_device, read, write)
565566   AM_RANGE(0xe230, 0xe3ff) AM_RAM
566567   AM_RANGE(0xe400, 0xe62f) AM_DEVREADWRITE("k054539_2", k054539_device, read, write)
567568   AM_RANGE(0xe630, 0xe7ff) AM_RAM
568   AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch3_byte_w)
569   AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_byte_r)
570   AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_byte_r)
569   AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch_byte_w)
570   AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch2_byte_r)
571   AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch3_byte_r)
571572   AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w)
572   AM_RANGE(0xfff1, 0xfff3) AM_WRITENOP
573573ADDRESS_MAP_END
574574
575
576static void sound_nmi( device_t *device )
577{
578   polygonet_state *state = device->machine().driver_data<polygonet_state>();
579   state->m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); // where is ack?
580}
581
582
575583static const k054539_interface k054539_config =
576584{
577   "shared"
585   "shared",
586   NULL,
587   sound_nmi
578588};
579589
580590/**********************************************************************************/
r23867r23868
589599   { 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4, 8*4,
590600      9*4, 10*4, 11*4, 12*4, 13*4, 14*4, 15*4 },
591601
592      128*8
602   128*8
593603};
594604
595605static GFXDECODE_START( plygonet )
596606   GFXDECODE_ENTRY( "gfx2", 0, bglayout, 0x0000, 64 )
597607GFXDECODE_END
598608
599void polygonet_state::machine_start()
609
610void polygonet_state::machine_reset()
600611{
601   logerror("Polygonet machine start\n");
612   membank("bank1")->set_entry(0);
613   m_sound_bank = 0;
614   
615   m_sys0 = 0;
616   m_sys1 = 0;
602617
603   /* Set the dsp56k lines */
604618   /* It's presumed the hardware has hard-wired operating mode 1 (MODA = 1, MODB = 0) */
605   /* TODO: This should work, but the MAME core appears to do something funny.
606            Not a big deal - it's hacked in dsp_w_lines. */
607   //m_dsp->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
608   //m_dsp->set_input_line(DSP56K_IRQ_MODA, ASSERT_LINE);
609   //m_dsp->set_input_line(DSP56K_IRQ_MODB, CLEAR_LINE);
619   m_dsp->set_input_line(DSP56K_IRQ_RESET, ASSERT_LINE);
620   m_dsp->set_input_line(DSP56K_IRQ_MODA, ASSERT_LINE);
621   m_dsp->set_input_line(DSP56K_IRQ_MODB, CLEAR_LINE);
610622}
611623
624void polygonet_state::machine_start()
625{
626   m_inputs[0] = ioport("IN0");
627   m_inputs[1] = ioport("IN1");
628   m_inputs[2] = ioport("IN2");
629   m_inputs[3] = ioport("IN3");
630
631   /* save states */
632   save_item(NAME(m_dsp56k_bank00_ram));
633   save_item(NAME(m_dsp56k_bank01_ram));
634   save_item(NAME(m_dsp56k_bank02_ram));
635   save_item(NAME(m_dsp56k_shared_ram_16));
636   save_item(NAME(m_dsp56k_bank04_ram));
637   save_item(NAME(m_sys0));
638   save_item(NAME(m_sys1));
639   save_item(NAME(m_sound_bank));
640}
641
612642static const k053936_interface polygonet_k053936_intf =
613643{
614644   0, 0, 0 /* wrap, xoff, yoff */
r23867r23868
616646
617647static MACHINE_CONFIG_START( plygonet, polygonet_state )
618648
619   MCFG_CPU_ADD("maincpu", M68EC020, 16000000) /* 16 MHz (xtal is 32.0 MHz) */
649   MCFG_CPU_ADD("maincpu", M68EC020, XTAL_32MHz/2)
620650   MCFG_CPU_PROGRAM_MAP(main_map)
621   MCFG_CPU_VBLANK_INT_DRIVER("screen", polygonet_state, polygonet_interrupt)
651   MCFG_CPU_VBLANK_INT_DRIVER("screen", polygonet_state, polygonet_interrupt)
622652
623   MCFG_CPU_ADD("dsp", DSP56156, 40000000)     /* xtal is 40.0 MHz, DSP has an internal divide-by-2 */
653   MCFG_CPU_ADD("dsp", DSP56156, XTAL_40MHz)
624654   MCFG_CPU_PROGRAM_MAP(dsp_program_map)
625655   MCFG_CPU_DATA_MAP(dsp_data_map)
626656
627   MCFG_CPU_ADD("soundcpu", Z80, 8000000)
657   MCFG_CPU_ADD("audiocpu", Z80, 8000000)
628658   MCFG_CPU_PROGRAM_MAP(sound_map)
629   MCFG_CPU_PERIODIC_INT_DRIVER(polygonet_state, audio_interrupt,  480)
659   
660   MCFG_QUANTUM_PERFECT_CPU("maincpu") /* TODO: TEMPORARY!  UNTIL A MORE LOCALIZED SYNC CAN BE MADE */
630661
662   MCFG_EEPROM_ADD("eeprom", eeprom_intf)
631663
632664   MCFG_GFXDECODE(plygonet)
633665
634   MCFG_EEPROM_ADD("eeprom", eeprom_intf)
635
636   /* TODO: TEMPORARY!  UNTIL A MORE LOCALIZED SYNC CAN BE MADE */
637   MCFG_QUANTUM_TIME(attotime::from_hz(1200000))
638
639666   /* video hardware */
640667   MCFG_SCREEN_ADD("screen", RASTER)
641668   MCFG_SCREEN_REFRESH_RATE(60)
r23867r23868
646673
647674   MCFG_PALETTE_LENGTH(32768)
648675
649
650676   MCFG_K053936_ADD("k053936", polygonet_k053936_intf)
651677
652678   /* sound hardware */
r23867r23868
668694   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
669695   PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW )
670696   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
671   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
672   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON3 )    /* SW1 (changes player color).  It's mapped on the JAMMA connector and plugs into an external switch mech. */
673   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON4 )    /* SW2 (changes player color).  It's mapped on the JAMMA connector and plugs into an external switch mech. */
697   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) // Start 1, unused
698   PORT_DIPNAME( 0x30, 0x00, "Player Color" ) /* 0x10(SW1), 0x20(SW2).  It's mapped on the JAMMA connector and plugs into an external switch mech. */
699   PORT_DIPSETTING(    0x00, "Red" )
700   PORT_DIPSETTING(    0x10, "Yellow" )
701   PORT_DIPSETTING(    0x20, "Green" )
702   PORT_DIPSETTING(    0x30, "Blue" )
674703   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
675704   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
676
705   
677706   PORT_START("IN1")
678   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP )   PORT_PLAYER(1)
679   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN ) PORT_PLAYER(1)
680   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP )    PORT_PLAYER(1)
681   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN )  PORT_PLAYER(1)
682   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
683   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
707   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP )
708   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN )
709   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP )
710   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN )
711   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
712   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
684713   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
685714   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
686715
687   PORT_START( "EEPROMOUT" )
688   PORT_BIT( 0x01000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, write_bit)
689   PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, set_cs_line)
690   PORT_BIT( 0x04000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, set_clock_line)
691INPUT_PORTS_END
692
693static INPUT_PORTS_START( polynetw )
694   PORT_START("IN0")
695   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
696   PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW )
697   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
698   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
699   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 )    /* SW1 (changes player color).  It's mapped on the JAMMA connector and plugs into an external switch mech. */
700   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 )    /* SW2 (changes player color).  It's mapped on the JAMMA connector and plugs into an external switch mech. */
716   PORT_START("IN2")
717   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_device, read_bit)
718   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT )
719   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 )
720   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) // Start 2, unused
721   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
722   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
701723   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
702724   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
703725
704   PORT_START("IN1")
705   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )  PORT_PLAYER(1)
706   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
707   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )    PORT_PLAYER(1)
708   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )  PORT_PLAYER(1)
709   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
710   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_PLAYER(1)
726   PORT_START("IN3")
727   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
728   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
729   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
730   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
731   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
732   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
711733   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
712734   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
735INPUT_PORTS_END
713736
714   PORT_START( "EEPROMOUT" )
715   PORT_BIT( 0x01000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, write_bit)
716   PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, set_cs_line)
717   PORT_BIT( 0x04000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, set_clock_line)
737static INPUT_PORTS_START( polynetw )
738   PORT_INCLUDE( polygonet )
739
740   PORT_MODIFY("IN1")
741   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
742   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
743   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
744   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
745   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
718746INPUT_PORTS_END
719747
720748
721749/**********************************************************************************/
722750DRIVER_INIT_MEMBER(polygonet_state,polygonet)
723751{
724   /* Set default bankswitch */
725   m_cur_sound_region = 2;
726   reset_sound_region();
752   membank("bank1")->configure_entries(0, 8, memregion("audiocpu")->base(), 0x4000);
727753
728754   /* Allocate space for the dsp56k banking */
729755   memset(m_dsp56k_bank00_ram, 0, sizeof(m_dsp56k_bank00_ram));
r23867r23868
735761   /* The dsp56k occasionally executes out of mapped memory */
736762   address_space &space = machine().device<dsp56k_device>("dsp")->space(AS_PROGRAM);
737763   m_dsp56k_update_handler = space.set_direct_update_handler(direct_update_delegate(FUNC(polygonet_state::plygonet_dsp56k_direct_handler), this));
738
739   /* save states */
740   save_item(NAME(m_dsp56k_bank00_ram));
741   save_item(NAME(m_dsp56k_bank01_ram));
742   save_item(NAME(m_dsp56k_bank02_ram));
743   save_item(NAME(m_dsp56k_shared_ram_16));
744   save_item(NAME(m_dsp56k_bank04_ram));
745   save_item(NAME(m_cur_sound_region));
746764}
747765
748766
749767/**********************************************************************************/
750768ROM_START( plygonet )
751   /* main program */
752   ROM_REGION( 0x200000, "maincpu", 0)
753   ROM_LOAD32_BYTE( "305uaa01.4k", 0x000003, 512*1024, CRC(8bdb6c95) SHA1(e981833842f8fd89b9726901fbe2058444204792) ) /* Boards exist without the "UA" in the label IE: 305a01, ect... */
769   ROM_REGION( 0x200000, "maincpu", 0) /* main program */
770   ROM_LOAD32_BYTE( "305uaa01.4k", 0x000003, 512*1024, CRC(8bdb6c95) SHA1(e981833842f8fd89b9726901fbe2058444204792) ) /* Boards exist without the "UA" in the label IE: 305a01, etc... */
754771   ROM_LOAD32_BYTE( "305uaa02.2k", 0x000002, 512*1024, CRC(4d7e32b3) SHA1(25731526535036972577637d186f02ae467296bd) )
755772   ROM_LOAD32_BYTE( "305uaa03.2h", 0x000001, 512*1024, CRC(36e4e3fe) SHA1(e8fcad4f196c9b225a0fbe70791493ff07c648a9) )
756773   ROM_LOAD32_BYTE( "305uaa04.4h", 0x000000, 512*1024, CRC(d8394e72) SHA1(eb6bcf8aedb9ba5843204ab8aacb735cbaafb74d) )
757
758   /* Z80 sound program */
759   ROM_REGION( 0x30000, "soundcpu", 0 )
774   
775   ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 sound program */
760776   ROM_LOAD("305b05.7b", 0x000000, 0x20000, CRC(2d3d9654) SHA1(784a409df47cee877e507b8bbd3610d161d63753) )
761   ROM_RELOAD( 0x10000, 0x20000)
762
763   /* TTL text plane tiles */
764   ROM_REGION( 0x20000, "gfx1", 0 )
777   
778   ROM_REGION( 0x20000, "gfx1", 0 ) /* TTL text plane tiles */
765779   ROM_LOAD( "305b06.18g", 0x000000, 0x20000, CRC(decd6e42) SHA1(4c23dcb1d68132d3381007096e014ee4b6007086) )
766
767   /* '936 tiles */
768   ROM_REGION( 0x40000, "gfx2", 0 )
780   
781   ROM_REGION( 0x40000, "gfx2", 0 ) /* '936 tiles */
769782   ROM_LOAD( "305b07.20d", 0x000000, 0x40000, CRC(e4320bc3) SHA1(b0bb2dac40d42f97da94516d4ebe29b1c3d77c37) )
770
771   /* sound data */
772   ROM_REGION( 0x200000, "shared", 0 )
783   
784   ROM_REGION( 0x200000, "shared", 0 ) /* sound data */
773785   ROM_LOAD( "305b08.2e", 0x000000, 0x200000, CRC(874607df) SHA1(763b44a80abfbc355bcb9be8bf44373254976019) )
774786
775   ROM_REGION16_BE( 0x80, "eeprom", 0 )
787   ROM_REGION16_BE( 0x200, "eeprom", ROMREGION_ERASEFF )
776788   ROM_LOAD( "plygonet.nv", 0x0000, 0x0080, CRC(627748ac) SHA1(ea1b06739fee235b049ff8daffff7d43cb093112) )
777789ROM_END
778790
779791ROM_START( polynetw )
780   /* main program */
781   ROM_REGION( 0x200000, "maincpu", 0)
792   ROM_REGION( 0x200000, "maincpu", 0) /* main program */
782793   ROM_LOAD32_BYTE( "305jaa01.4k", 0x000003, 0x080000, CRC(ea889bd9) SHA1(102e7c0f0c064662c0f6137ad5da97a9ccd49a97) )
783794   ROM_LOAD32_BYTE( "305jaa02.2k", 0x000002, 0x080000, CRC(d0710379) SHA1(cf0970d63e8d021edf2d404838c658a5b7cb8fb8) )
784795   ROM_LOAD32_BYTE( "305jaa03.2h", 0x000001, 0x080000, CRC(278b5928) SHA1(2ea96054e2ef637731cd64f2bef0b5b2bbe7e24f) )
785796   ROM_LOAD32_BYTE( "305jaa04.4h", 0x000000, 0x080000, CRC(b069353b) SHA1(12fbe2df09328bb7193e89a49d84a61eab5bfdcb) )
786
787   /* Z80 sound program */
788   ROM_REGION( 0x30000, "soundcpu", 0 )
797   
798   ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 sound program */
789799   ROM_LOAD( "305jaa05.7b", 0x000000, 0x020000, CRC(06053db6) SHA1(c7d43c2650d949ee552a49db93dece842c17e68d) )
790   ROM_RELOAD( 0x10000, 0x20000)
791
792   /* TTL text plane tiles */
793   ROM_REGION( 0x20000, "gfx1", 0 )
800   
801   ROM_REGION( 0x20000, "gfx1", 0 ) /* TTL text plane tiles */
794802   ROM_LOAD( "305a06.18g", 0x000000, 0x020000, CRC(4b9b7e9c) SHA1(8c3c0f1ec7e26fd9552f6da1e6bdd7ff4453ba57) )
795
796   /* '936 tiles */
797   ROM_REGION( 0x40000, "gfx2", 0 )
803   
804   ROM_REGION( 0x40000, "gfx2", 0 ) /* '936 tiles */
798805   ROM_LOAD( "305a07.20d", 0x000000, 0x020000, CRC(0959283b) SHA1(482caf96e8e430b87810508b1a1420cd3b58f203) )
799
800   /* sound data */
801   ROM_REGION( 0x400000, "shared", 0 )
806   
807   ROM_REGION( 0x400000, "shared", 0 ) /* sound data */
802808   ROM_LOAD( "305a08.2e", 0x000000, 0x200000, CRC(7ddb8a52) SHA1(3199b347fc433ffe0de8521001df77672d40771e) )
803809   ROM_LOAD( "305a09.3e", 0x200000, 0x200000, CRC(6da1be58) SHA1(d63ac16ac551193ff8a6036724fb59e1d702e06b) )
804810
805   ROM_REGION16_BE( 0x80, "eeprom", 0 )
811   ROM_REGION16_BE( 0x200, "eeprom", ROMREGION_ERASEFF )
806812   ROM_LOAD( "polynetw.nv", 0x0000, 0x0080, CRC(8f39d644) SHA1(8733e1a288ba20c4b04b3aedde52801d05cebdf9) )
807813ROM_END
808814

Previous 199869 Revisions Next


© 1997-2024 The MAME Team