Previous 199869 Revisions Next

r18406 Wednesday 10th October, 2012 at 11:39:43 UTC by Robbbert
hercules , superman : basically working, no sound, no dips
[src/mame/drivers]atari_s2.c
[src/mame/layout]atari_s2.lay

trunk/src/mame/layout/atari_s2.lay
r18405r18406
3434
3535      <!-- Player 1 Score -->
3636
37      <bezel name="digit28" element="digit">
37      <bezel name="digit11" element="digit">
3838         <bounds left="10" top="45" right="44" bottom="84" />
3939      </bezel>
40      <bezel name="digit29" element="digit">
40      <bezel name="digit12" element="digit">
4141         <bounds left="54" top="45" right="88" bottom="84" />
4242      </bezel>
43      <bezel name="digit26" element="digit">
43      <bezel name="digit13" element="digit">
4444         <bounds left="98" top="45" right="132" bottom="84" />
4545      </bezel>
46      <bezel name="digit27" element="digit">
46      <bezel name="digit14" element="digit">
4747         <bounds left="142" top="45" right="176" bottom="84" />
4848      </bezel>
49      <bezel name="digit24" element="digit">
49      <bezel name="digit15" element="digit">
5050         <bounds left="186" top="45" right="220" bottom="84" />
5151      </bezel>
52      <bezel name="digit25" element="digit">
52      <bezel name="digit16" element="digit">
5353         <bounds left="230" top="45" right="264" bottom="84" />
5454      </bezel>
5555
5656      <!-- Player 2 Score -->
57      <bezel name="digit20" element="digit">
57      <bezel name="digit21" element="digit">
5858         <bounds left="10" top="105" right="44" bottom="144" />
5959      </bezel>
60      <bezel name="digit21" element="digit">
60      <bezel name="digit22" element="digit">
6161         <bounds left="54" top="105" right="88" bottom="144" />
6262      </bezel>
63      <bezel name="digit18" element="digit">
63      <bezel name="digit23" element="digit">
6464         <bounds left="98" top="105" right="132" bottom="144" />
6565      </bezel>
66      <bezel name="digit19" element="digit">
66      <bezel name="digit24" element="digit">
6767         <bounds left="142" top="105" right="176" bottom="144" />
6868      </bezel>
69      <bezel name="digit16" element="digit">
69      <bezel name="digit25" element="digit">
7070         <bounds left="186" top="105" right="220" bottom="144" />
7171      </bezel>
72      <bezel name="digit17" element="digit">
72      <bezel name="digit26" element="digit">
7373         <bounds left="230" top="105" right="264" bottom="144" />
7474      </bezel>
7575
7676      <!-- Player 3 Score -->
77      <bezel name="digit12" element="digit">
77      <bezel name="digit31" element="digit">
7878         <bounds left="10" top="165" right="44" bottom="204" />
7979      </bezel>
80      <bezel name="digit13" element="digit">
80      <bezel name="digit32" element="digit">
8181         <bounds left="54" top="165" right="88" bottom="204" />
8282      </bezel>
83      <bezel name="digit10" element="digit">
83      <bezel name="digit33" element="digit">
8484         <bounds left="98" top="165" right="132" bottom="204" />
8585      </bezel>
86      <bezel name="digit11" element="digit">
86      <bezel name="digit34" element="digit">
8787         <bounds left="142" top="165" right="176" bottom="204" />
8888      </bezel>
89      <bezel name="digit8" element="digit">
89      <bezel name="digit35" element="digit">
9090         <bounds left="186" top="165" right="220" bottom="204" />
9191      </bezel>
92      <bezel name="digit9" element="digit">
92      <bezel name="digit36" element="digit">
9393         <bounds left="230" top="165" right="264" bottom="204" />
9494      </bezel>
9595
9696      <!-- Player 4 Score -->
97      <bezel name="digit4" element="digit">
97      <bezel name="digit41" element="digit">
9898         <bounds left="10" top="225" right="44" bottom="264" />
9999      </bezel>
100      <bezel name="digit5" element="digit">
100      <bezel name="digit42" element="digit">
101101         <bounds left="54" top="225" right="88" bottom="264" />
102102      </bezel>
103      <bezel name="digit2" element="digit">
103      <bezel name="digit43" element="digit">
104104         <bounds left="98" top="225" right="132" bottom="264" />
105105      </bezel>
106      <bezel name="digit3" element="digit">
106      <bezel name="digit44" element="digit">
107107         <bounds left="142" top="225" right="176" bottom="264" />
108108      </bezel>
109      <bezel name="digit0" element="digit">
109      <bezel name="digit45" element="digit">
110110         <bounds left="186" top="225" right="220" bottom="264" />
111111      </bezel>
112      <bezel name="digit1" element="digit">
112      <bezel name="digit46" element="digit">
113113         <bounds left="230" top="225" right="264" bottom="264" />
114114      </bezel>
115115
116116      <!-- Credits and Balls -->
117      <bezel name="digit58" element="digit">
117      <bezel name="digit51" element="digit">
118118         <bounds left="10" top="345" right="44" bottom="384" />
119119      </bezel>
120      <bezel name="digit59" element="digit">
120      <bezel name="digit52" element="digit">
121121         <bounds left="54" top="345" right="88" bottom="384" />
122122      </bezel>
123      <bezel name="digit70" element="digit">
123      <bezel name="digit53" element="digit">
124124         <bounds left="98" top="345" right="132" bottom="384" />
125125      </bezel>
126      <bezel name="digit71" element="digit">
126      <bezel name="digit54" element="digit">
127127         <bounds left="142" top="345" right="176" bottom="384" />
128128      </bezel>
129      <bezel name="digit56" element="digit">
129      <bezel name="digit55" element="digit">
130130         <bounds left="186" top="345" right="220" bottom="384" />
131131      </bezel>
132      <bezel name="digit57" element="digit">
132      <bezel name="digit56" element="digit">
133133         <bounds left="230" top="345" right="264" bottom="384" />
134134      </bezel>
135135      <bezel element="P0"><bounds left="200" right="258" top="330" bottom="342" /></bezel>
trunk/src/mame/drivers/atari_s2.c
r18405r18406
2323   m_samples(*this, "samples")
2424   { }
2525
26   DECLARE_WRITE8_HANDLER(sound0_w) { };
27   DECLARE_WRITE8_HANDLER(sound1_w) { };
28   DECLARE_WRITE8_HANDLER(lamp_w) { };
29   DECLARE_WRITE8_HANDLER(sol0_w) { };
30   DECLARE_WRITE8_HANDLER(sol1_w) { };
2631   DECLARE_WRITE8_HANDLER(intack_w);
32   DECLARE_WRITE8_HANDLER(display_w);
33   DECLARE_READ8_MEMBER(switch_r);
2734
28
2935   TIMER_DEVICE_CALLBACK_MEMBER(irq);
3036protected:
3137
r18405r18406
3743   virtual void machine_reset();
3844private:
3945   UINT8 m_t_c;
46   UINT8 m_segment[7];
4047};
4148
4249
r18405r18406
4451   ADDRESS_MAP_GLOBAL_MASK(0x3fff)
4552   AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x0700) AM_RAM
4653   AM_RANGE(0x0800, 0x08ff) AM_MIRROR(0x0700) AM_RAM AM_SHARE("nvram") // battery backed
47   //AM_RANGE(0x1000, 0x1007) AM_MIRROR(0x07F8) AM_READ(sw_r)
48   //AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x071F) AM_WRITE(sound0_w)
49   //AM_RANGE(0x1820, 0x1820) AM_MIRROR(0x071F) AM_WRITE(sound1_w)
50   //AM_RANGE(0x1840, 0x1847) AM_MIRROR(0x0718) AM_WRITE(disp_w)
51   //AM_RANGE(0x1860, 0x1867) AM_MIRROR(0x0718) AM_WRITE(lamp_w)
52   //AM_RANGE(0x1880, 0x1880) AM_MIRROR(0x071F) AM_WRITE(sol0_w)
53   //AM_RANGE(0x18a0, 0x18a7) AM_MIRROR(0x0718) AM_WRITE(sol1_w)
54   AM_RANGE(0x1000, 0x1007) AM_MIRROR(0x07F8) AM_READ(switch_r)
55   AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x071F) AM_WRITE(sound0_w)
56   AM_RANGE(0x1820, 0x1820) AM_MIRROR(0x071F) AM_WRITE(sound1_w)
57   AM_RANGE(0x1840, 0x1847) AM_MIRROR(0x0718) AM_WRITE(display_w)
58   AM_RANGE(0x1860, 0x1867) AM_MIRROR(0x0718) AM_WRITE(lamp_w)
59   AM_RANGE(0x1880, 0x1880) AM_MIRROR(0x071F) AM_WRITE(sol0_w)
60   AM_RANGE(0x18a0, 0x18a7) AM_MIRROR(0x0718) AM_WRITE(sol1_w)
5461   AM_RANGE(0x18c0, 0x18c0) AM_MIRROR(0x071F) AM_WRITE(watchdog_reset_w)
5562   AM_RANGE(0x18e0, 0x18e0) AM_MIRROR(0x071F) AM_WRITE(intack_w)
56   //AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x07FC) AM_READWRITE(dip_r,dip_w)
63   AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x07FC) AM_READ_PORT("DSW0")
64   AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x07FC) AM_READ_PORT("DSW1")
65   AM_RANGE(0x2002, 0x2002) AM_MIRROR(0x07FC) AM_READ_PORT("DSW2")
66   AM_RANGE(0x2003, 0x2003) AM_MIRROR(0x07FC) AM_READ_PORT("DSW3")
5767   AM_RANGE(0x2800, 0x3fff) AM_ROM
5868ADDRESS_MAP_END
5969
6070static INPUT_PORTS_START( atari_s2 )
71   // dipswitches still to be described
72   PORT_START("DSW0")
73   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
74
75   PORT_START("DSW1")
76   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
77
78   PORT_START("DSW2")
79   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
80
81   PORT_START("DSW3")
82   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
83
84   PORT_START("X0") // 1000
85   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Test") PORT_CODE(KEYCODE_0)
86   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Outhole") PORT_CODE(KEYCODE_X)
87   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START )
88   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
89   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
90   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER )
91   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
92
93   PORT_START("X1") // 1001
94   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER )
95   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER )
96   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER )
97   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER )
98   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Q)
99   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_W)
100   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
101
102   PORT_START("X2") // 1002
103   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER )
104   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER )
105   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_E)
106   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_R)
107   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Y)
108   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_U)
109   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
110
111   PORT_START("X3") // 1003
112   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_I)
113   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_O)
114   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A)
115   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER )
116   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S)
117   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D)
118   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
119
120   PORT_START("X4") // 1004
121   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F)
122   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_G)
123   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER )
124   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_H)
125   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_J)
126   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_K)
127   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
128
129   PORT_START("X5") // 1005
130   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L)
131   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER )
132   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER )
133   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER )
134   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER )
135   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER )
136   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
137
138   PORT_START("X6") // 1006
139   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_TILT )
140   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER )
141   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER )
142   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER )
143   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Z)
144   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_C)
145   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
146
147   PORT_START("X7") // 1007
148   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_V)
149   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_B)
150   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER )
151   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER )
152   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER )
153   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER )
154   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
61155INPUT_PORTS_END
62156
157WRITE8_MEMBER( atari_s2_state::display_w )
158{
159   static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // 4511
160   if (offset<7)
161      m_segment[offset] = patterns[data&15];
162   else
163   {
164      data &= 7;
165      for (UINT8 i = 0; i < 7; i++)
166         output_set_digit_value(i * 10 + data, m_segment[i]);
167   }
168}
169
63170WRITE8_MEMBER( atari_s2_state::intack_w )
64171{
65172   m_maincpu->set_input_line(M6800_IRQ_LINE, CLEAR_LINE);
66173}
67174
175READ8_MEMBER( atari_s2_state::switch_r )
176{
177   char kbdrow[8];
178   sprintf(kbdrow,"X%X",offset);
179   return ioport(kbdrow)->read();
180}
181
68182TIMER_DEVICE_CALLBACK_MEMBER( atari_s2_state::irq )
69183{
70//   static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // 4511
71//   m_bit6++;
72184   if (m_t_c > 0x40)
73185      m_maincpu->set_input_line(M6800_IRQ_LINE, HOLD_LINE);
74186   else
75187      m_t_c++;
76
77//   m_out_offs++;
78//   m_out_offs &= 0x1f;
79//   if ((m_out_offs & 3) == 3)
80//   {
81//      // Player number
82//      char wordnum[8];
83//      sprintf(wordnum,"text%d",m_out_offs>>2);
84//      output_set_value(wordnum, !BIT(patterns[m_p_ram[m_out_offs]&15], 6)); // uses 'g' segment
85//   }
86//   else
87//   {
88//      // Digits
89//      output_set_digit_value(m_out_offs << 1, patterns[m_p_ram[m_out_offs]>>4]);
90//      output_set_digit_value((m_out_offs << 1)+1, patterns[m_p_ram[m_out_offs]&15]);
91//   }
92188}
93189
94190void atari_s2_state::machine_reset()

Previous 199869 Revisions Next


© 1997-2024 The MAME Team