Previous 199869 Revisions Next

r26562 Monday 9th December, 2013 at 14:35:49 UTC by hap
redid lamps again
[src/mame/drivers]mw18w.c

trunk/src/mame/drivers/mw18w.c
r26561r26562
77TODO:
88- needs extensive interactive artwork
99- discrete sound
10- identify lamps
1110
1211To diagnose game, turn on service mode and:
1312- test RAM/ROM, leds, lamps:    reset with shifter in neutral
r26561r26562
2827public:
2928   mw18w_state(const machine_config &mconfig, device_type type, const char *tag)
3029      : driver_device(mconfig, type, tag),
31      m_maincpu(*this, "maincpu"),
32      m_lamp_timer(*this, "lamp_timer")
30      m_maincpu(*this, "maincpu")
3331   { }
3432
3533   required_device<cpu_device> m_maincpu;
36   required_device<timer_device> m_lamp_timer;
37   
38   int m_lamps_on[8][5];
39
4034   DECLARE_WRITE8_MEMBER(mw18w_sound0_w);
4135   DECLARE_WRITE8_MEMBER(mw18w_sound1_w);
4236   DECLARE_WRITE8_MEMBER(mw18w_lamps_w);
4337   DECLARE_WRITE8_MEMBER(mw18w_led_display_w);
4438   DECLARE_WRITE8_MEMBER(mw18w_irq0_clear_w);
4539   DECLARE_CUSTOM_INPUT_MEMBER(mw18w_sensors_r);
46   TIMER_DEVICE_CALLBACK_MEMBER(mw18w_update_lamps);
47
48   virtual void machine_start();
4940};
5041
5142
r26561r26562
8677   
8778   // refresh lamp status
8879   for (int i = 0; i < 5; i++)
89      if (rows >> i & 1) m_lamps_on[col][i] = 100;
80      output_set_lamp_value(col * 10 + i, rows >> i & 1);
81
82   /* lamps info:
83   
84   00: upper right load zone
85   01: lower right load zone
86   02: lost cargo
87   03: hi score
88   04: right crash
89
90   10: 2 pos. load lost sequence
91   11: 3 pos. load lost sequence
92   12: 4 pos. load lost sequence
93   13: 5 pos. load lost sequence
94   14: 6 pos. load lost sequence
95
96   20: down shift
97   21: pick up cargo
98   22: ahead
99   23: 1 pos. load lost sequence
100   24: go
101
102   30: right man arm body
103   31: right man arm down
104   32: right man arm up
105   33: not used
106   34: not used
107
108   40: left man arm up
109   41: left man body
110   42: left man arm down
111   43: left crash
112   44: not used
113
114   50: 1 cargo
115   51: 3 cargo
116   52: 5 cargo
117   53: 7 cargo
118   54: not used
119
120   60: 2 cargo
121   61: 4 cargo
122   62: 6 cargo
123   63: 8 cargo
124   64: not used
125
126   70: upper left load zone
127   71: lower left load zone
128   72: extended play
129   73: credit
130   74: game over
131   
132   (80: backdrop dim)
133   
134   */
90135}
91136
92137WRITE8_MEMBER(mw18w_state::mw18w_led_display_w)
r26561r26562
219264
220265***************************************************************************/
221266
222TIMER_DEVICE_CALLBACK_MEMBER(mw18w_state::mw18w_update_lamps)
223{
224   // arbitrary timer to update and output lamp matrix
225   for (int col = 0; col < 8; col++)
226   {
227      for (int row = 0; row < 5; row++)
228      {
229         if (m_lamps_on[col][row]) m_lamps_on[col][row]--;
230         output_set_lamp_value(col * 10 + row, m_lamps_on[col][row] != 0);
231      }
232   }
233   
234   /* lamps info:
235   
236   00: upper right load zone
237   01: lower right load zone
238   02: lost cargo
239   03: hi score
240   04: right crash
241
242   10: 2 pos. load lost sequence
243   11: 3 pos. load lost sequence
244   12: 4 pos. load lost sequence
245   13: 5 pos. load lost sequence
246   14: 6 pos. load lost sequence
247
248   20: down shift
249   21: pick up cargo
250   22: ahead
251   23: 1 pos. load lost sequence
252   24: go
253
254   30: right man arm body
255   31: right man arm down
256   32: right man arm up
257   33: not used
258   34: not used
259
260   40: left man arm up
261   41: left man body
262   42: left man arm down
263   43: left crash
264   44: not used
265
266   50: 1 cargo
267   51: 3 cargo
268   52: 5 cargo
269   53: 7 cargo
270   54: not used
271
272   60: 2 cargo
273   61: 4 cargo
274   62: 6 cargo
275   63: 8 cargo
276   64: not used
277
278   70: upper left load zone
279   71: lower left load zone
280   72: extended play
281   73: credit
282   74: game over
283   
284   (80: backdrop dim)
285   
286   */
287}
288
289void mw18w_state::machine_start()
290{
291   // init lamp matrix
292   for (int row = 0; row < 5; row++)
293      for (int col = 0; col < 8; col++)
294         m_lamps_on[col][row] = 0;
295   
296   save_item(NAME(m_lamps_on));
297}
298
299267static MACHINE_CONFIG_START( mw18w, mw18w_state )
300268
301269   /* basic machine hardware */
r26561r26562
304272   MCFG_CPU_PROGRAM_MAP(mw18w_map)
305273   MCFG_CPU_IO_MAP(mw18w_portmap)
306274
307   MCFG_TIMER_DRIVER_ADD_PERIODIC("lamp_timer", mw18w_state, mw18w_update_lamps, attotime::from_hz(500)) // capacitors, frequency is a simple guess (/100)
308
309275   /* no video! */
310276
311277   /* sound hardware */

Previous 199869 Revisions Next


© 1997-2024 The MAME Team