Previous 199869 Revisions Next

r18858 Monday 5th November, 2012 at 13:16:44 UTC by Robbbert
Williams System 11 : fixed alphanumeric display
[src/mame/drivers]s11.c
[src/mame/layout]s11.lay

trunk/src/mame/layout/s11.lay
r18857r18858
137137         <bounds left="54" top="345" right="88" bottom="384" />
138138      </bezel>
139139      <bezel name="digit60" element="diag">
140         <bounds left="142" top="345" right="176" bottom="384" />
140         <bounds left="142" top="345" right="176" bottom="380" />
141141      </bezel>
142142      <bezel name="digit0" element="digit">
143143         <bounds left="186" top="345" right="220" bottom="384" />
trunk/src/mame/drivers/s11.c
r18857r18858
77
88
99ToDo:
10- Determine what drives the background sound (atm it's a guess)
11- Can coin up but not start
1012
1113*****************************************************************************************/
1214
r18857r18858
7173   DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { }; // dummy to stop error log filling up
7274   DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { }; // comma3&4
7375   DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { }; // comma1&2
76   DECLARE_WRITE_LINE_MEMBER(pia30_cb2_w) { }; // dummy to stop error log filling up
7477   DECLARE_WRITE_LINE_MEMBER(ym2151_irq_w);
7578   TIMER_DEVICE_CALLBACK_MEMBER(irq);
7679   DECLARE_INPUT_CHANGED_MEMBER(main_nmi);
r18857r18858
99102   UINT8 m_sound_data;
100103   UINT8 m_strobe;
101104   UINT8 m_kbdrow;
105   UINT32 m_segment1;
106   UINT32 m_segment2;
102107   bool m_ca1;
103   bool m_data_ok;
104108};
105109
106110static ADDRESS_MAP_START( s11_main_map, AS_PROGRAM, 8, s11_state )
r18857r18858
243247// sound ns
244248   m_ca1 = state;
245249   m_pias->ca1_w(m_ca1);
250   m_pia40->cb2_w(m_ca1);
246251}
247252
248253static const pia6821_interface pia21_intf =
r18857r18858
296301{
297302   static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0x58, 0x4c, 0x62, 0x69, 0x78, 0 }; // 7447
298303   data &= 0x7f;
299   m_strobe = data & 15;printf("C=%X ",m_strobe);
300   m_data_ok = true;
304   m_strobe = data & 15;
301305   output_set_digit_value(60, patterns[data>>4]); // diag digit
306   m_segment1 = 0;
307   m_segment2 = 0;
302308}
303309
304310WRITE8_MEMBER( s11_state::dig1_w )
305311{
306   static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // MC14558
307   if (m_data_ok)
312   m_segment2 |= data;
313   m_segment2 |= 0x20000;
314   if ((m_segment2 & 0x70000) == 0x30000)
308315   {
309      output_set_digit_value(m_strobe+16, patterns[data&15]);
310      output_set_digit_value(m_strobe, patterns[data>>4]);
316      output_set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
317      m_segment2 |= 0x40000;
311318   }
312   m_data_ok = false;
313319}
314320
315321static const pia6821_interface pia28_intf =
r18857r18858
329335};
330336
331337WRITE8_MEMBER( s11_state::pia2c_pa_w )
332{printf("0=%X ",data);
338{
339   m_segment1 |= (data<<8);
340   m_segment1 |= 0x10000;
341   if ((m_segment1 & 0x70000) == 0x30000)
342   {
343      output_set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
344      m_segment1 |= 0x40000;
345   }
333346}
334347
335348WRITE8_MEMBER( s11_state::pia2c_pb_w )
336{printf("1=%X ",data);
349{
350   m_segment1 |= data;
351   m_segment1 |= 0x20000;
352   if ((m_segment1 & 0x70000) == 0x30000)
353   {
354      output_set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
355      m_segment1 |= 0x40000;
356   }
337357}
338358
339359static const pia6821_interface pia2c_intf =
r18857r18858
375395   DEVCB_NULL,      /* port A out */
376396   DEVCB_DRIVER_MEMBER(s11_state, switch_w),      /* port B out */
377397   DEVCB_NULL,      /* line CA2 out */
378   DEVCB_NULL,      /* line CB2 out */
398   DEVCB_DRIVER_LINE_MEMBER(s11_state, pia30_cb2_w),      /* line CB2 out */
379399   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),   /* IRQA */
380400   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
381401};
382402
383403WRITE8_MEMBER( s11_state::pia34_pa_w )
384{printf("2=%X ",data);
404{
405   m_segment2 |= (data<<8);
406   m_segment2 |= 0x10000;
407   if ((m_segment2 & 0x70000) == 0x30000)
408   {
409      output_set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
410      m_segment2 |= 0x40000;
411   }
385412}
386413
387414WRITE8_MEMBER( s11_state::pia34_pb_w )
388{printf("3=%X ",data);
415{
389416}
390417
391418static const pia6821_interface pia34_intf =
r18857r18858
465492
466493static const pia6821_interface pia40_intf =
467494{
468   DEVCB_DRIVER_MEMBER(s11_state, dac_r),      /* port A in */
469   DEVCB_NULL,      /* port B in */
495   DEVCB_NULL,      /* port A in */
496   DEVCB_DRIVER_MEMBER(s11_state, dac_r),      /* port B in */
470497   DEVCB_DRIVER_LINE_MEMBER(s11_state, pias_ca1_r),      /* line CA1 in */
471498   DEVCB_NULL,      /* line CB1 in */
472499   DEVCB_LINE_VCC,      /* line CA2 in */
r18857r18858
519546   MCFG_PIA6821_ADD("pia2c", pia2c_intf)
520547   MCFG_PIA6821_ADD("pia30", pia30_intf)
521548   MCFG_PIA6821_ADD("pia34", pia34_intf)
522   MCFG_NVRAM_ADD_0FILL("nvram")
549   MCFG_NVRAM_ADD_1FILL("nvram")
523550
524551   /* Add the soundcard */
525552   MCFG_CPU_ADD("audiocpu", M6808, 3580000)
r18857r18858
559586   ROM_LOAD("lzrd_u26.l4", 0x4000, 0x2000, CRC(5fe50db6) SHA1(7e2adfefce5c33ad605606574dbdfb2642aa0e85))
560587   ROM_RELOAD( 0x6000, 0x2000)
561588   ROM_LOAD("lzrd_u27.l4", 0x8000, 0x8000, CRC(6462ca55) SHA1(0ebfa998d3cefc213ada9ed815d44977120e5d6d))
589   ROM_FILL(0x6035, 1, 0) // default to English
562590
563591   // according to the manual these should be 32K roms just like the other games here
564592   ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
r18857r18858
670698   ROM_LOAD("road_u4.l1", 0x8000, 0x8000, CRC(4395b48f) SHA1(2325ce6ba7f6f92f884c302e6f053c31229dc774))
671699ROM_END
672700
673
674701/************************ From here, not pinball machines **************************************/
675702
676703/*--------------------
r18857r18858
745772   ROM_REGION(0x10000, "bgcpu", ROMREGION_ERASEFF)
746773ROM_END
747774
748GAME( 1986, grand_l4, 0,        s11, s11,  s11_state, s11, ROT0, "Williams", "Grand Lizard (L-4)", GAME_IS_SKELETON_MECHANICAL)
749GAME( 1986, hs_l4,    0,        s11, s11,  s11_state, s11, ROT0, "Williams", "High Speed (L-4)", GAME_IS_SKELETON_MECHANICAL)
750GAME( 1986, hs_l3,    hs_l4,    s11, s11,  s11_state, s11, ROT0, "Williams", "High Speed (L-3)", GAME_IS_SKELETON_MECHANICAL)
751GAME( 1986, rdkng_l5, rdkng_l4, s11, s11,  s11_state, s11, ROT0, "Williams", "Road Kings (L-5)", GAME_IS_SKELETON_MECHANICAL)
752GAME( 1986, rdkng_l4, 0,        s11, s11,  s11_state, s11, ROT0, "Williams", "Road Kings (L-4)", GAME_IS_SKELETON_MECHANICAL)
753GAME( 1986, rdkng_l1, rdkng_l4, s11, s11,  s11_state, s11, ROT0, "Williams", "Road Kings (L-1)", GAME_IS_SKELETON_MECHANICAL)
754GAME( 1986, rdkng_l2, rdkng_l4, s11, s11,  s11_state, s11, ROT0, "Williams", "Road Kings (L-2)", GAME_IS_SKELETON_MECHANICAL)
755GAME( 1986, rdkng_l3, rdkng_l4, s11, s11,  s11_state, s11, ROT0, "Williams", "Road Kings (L-3)", GAME_IS_SKELETON_MECHANICAL)
756GAME( 1986, tts_l2,   0,        s11, s11,  s11_state, s11, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-2)", GAME_IS_SKELETON_MECHANICAL)
757GAME( 1986, tts_l1,   tts_l2,   s11, s11,  s11_state, s11, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-1)", GAME_IS_SKELETON_MECHANICAL)
758GAME( 1987, gmine_l2, 0,        s11, s11,  s11_state, s11, ROT0, "Williams", "Gold Mine (Shuffle) (L-2)", GAME_IS_SKELETON_MECHANICAL)
759GAME( 1987, tdawg_l1, 0,        s11, s11,  s11_state, s11, ROT0, "Williams", "Top Dawg (Shuffle) (L-1)", GAME_IS_SKELETON_MECHANICAL)
760GAME( 1987, shfin_l1, 0,        s11, s11,  s11_state, s11, ROT0, "Williams", "Shuffle Inn (Shuffle) (L-1)", GAME_IS_SKELETON_MECHANICAL)
775GAME( 1986, grand_l4, 0,        s11, s11, s11_state, s11, ROT0, "Williams", "Grand Lizard (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING)
776GAME( 1986, hs_l4,    0,        s11, s11, s11_state, s11, ROT0, "Williams", "High Speed (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING)
777GAME( 1986, hs_l3,    hs_l4,    s11, s11, s11_state, s11, ROT0, "Williams", "High Speed (L-3)", GAME_MECHANICAL | GAME_NOT_WORKING)
778GAME( 1986, rdkng_l5, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-5)", GAME_MECHANICAL | GAME_NOT_WORKING)
779GAME( 1986, rdkng_l4, 0,        s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING)
780GAME( 1986, rdkng_l1, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING)
781GAME( 1986, rdkng_l2, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING)
782GAME( 1986, rdkng_l3, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-3)", GAME_MECHANICAL | GAME_NOT_WORKING)
783GAME( 1986, tts_l2,   0,        s11, s11, s11_state, s11, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
784GAME( 1986, tts_l1,   tts_l2,   s11, s11, s11_state, s11, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
785GAME( 1987, gmine_l2, 0,        s11, s11, s11_state, s11, ROT0, "Williams", "Gold Mine (Shuffle) (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING)
786GAME( 1987, tdawg_l1, 0,        s11, s11, s11_state, s11, ROT0, "Williams", "Top Dawg (Shuffle) (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING)
787GAME( 1987, shfin_l1, 0,        s11, s11, s11_state, s11, ROT0, "Williams", "Shuffle Inn (Shuffle) (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team