Previous 199869 Revisions Next

r23906 Monday 24th June, 2013 at 10:57:12 UTC by Barry Rodewald
de_3: hooked up enough stuff so that games will boot.  Implemented DMD Type 2 device and hooked that up to those games that use it.
[src/mame]mame.mak
[src/mame/drivers]de_3.c
[src/mame/video]decodmd2.c* decodmd2.h*

trunk/src/mame/drivers/de_3.c
r23905r23906
55
66#include "emu.h"
77#include "cpu/m6800/m6800.h"
8#include "cpu/m6809/m6809.h"
9#include "machine/6821pia.h"
810#include "audio/decobsmt.h"
11#include "video/decodmd2.h"
912#include "machine/genpin.h"
1013#include "machine/nvram.h"
1114
r23905r23906
2932   de_3_state(const machine_config &mconfig, device_type type, const char *tag)
3033      : genpin_class(mconfig, type, tag),
3134      m_maincpu(*this, "maincpu"),
32//      m_pia21(*this, "pia21"),
33//      m_pia24(*this, "pia24"),
34//      m_pia28(*this, "pia28"),
35//      m_pia2c(*this, "pia2c"),
36//      m_pia30(*this, "pia30"),
37//      m_pia34(*this, "pia34"),
38      m_audiocpu(*this, "audiocpu"),
35      m_pia21(*this, "pia21"),
36      m_pia24(*this, "pia24"),
37      m_pia28(*this, "pia28"),
38      m_pia2c(*this, "pia2c"),
39      m_pia30(*this, "pia30"),
40      m_pia34(*this, "pia34"),
41      m_dmdtype2(*this, "decodmd"),
3942      m_decobsmt(*this, "decobsmt")
4043   { }
4144
4245   // devices
4346   required_device<cpu_device> m_maincpu;
44   required_device<cpu_device> m_audiocpu;
47   required_device<pia6821_device> m_pia21;
48   required_device<pia6821_device> m_pia24;
49   required_device<pia6821_device> m_pia28;
50   required_device<pia6821_device> m_pia2c;
51   required_device<pia6821_device> m_pia30;
52   required_device<pia6821_device> m_pia34;
53   optional_device<decodmd_type2_device> m_dmdtype2;
54
55   // driver_device overrides
56   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
57   static const device_timer_id TIMER_IRQ = 0;
58
59   DECLARE_WRITE8_MEMBER(pia34_pa_w);
60   DECLARE_READ8_MEMBER(switch_r);
61   DECLARE_WRITE8_MEMBER(switch_w);
62   DECLARE_WRITE8_MEMBER(pia2c_pa_w);
63   DECLARE_READ8_MEMBER(pia2c_pb_r);
64   DECLARE_WRITE8_MEMBER(pia2c_pb_w);
65   DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { }; // comma3&4
66   DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { }; // comma1&2
67   DECLARE_READ8_MEMBER(pia28_w7_r);
68   DECLARE_WRITE8_MEMBER(dig0_w);
69   DECLARE_WRITE8_MEMBER(dig1_w);
70   DECLARE_WRITE8_MEMBER(lamp0_w);
71   DECLARE_WRITE8_MEMBER(lamp1_w) { };
72   //DECLARE_WRITE_LINE_MEMBER(ym2151_irq_w);
73   //DECLARE_WRITE_LINE_MEMBER(msm5205_irq_w);
74   DECLARE_WRITE_LINE_MEMBER(pia_irq);
75   DECLARE_WRITE8_MEMBER(sol2_w) { }; // solenoids 8-15
76   DECLARE_WRITE8_MEMBER(sol3_w);
77   DECLARE_WRITE8_MEMBER(sound_w);
78   DECLARE_WRITE8_MEMBER(dac_w) { };
79   DECLARE_WRITE_LINE_MEMBER(pia21_ca2_w);
80   DECLARE_INPUT_CHANGED_MEMBER(main_nmi);
81   DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
82   DECLARE_READ8_MEMBER(dmd_status_r);
83
84//   DECLARE_READ8_MEMBER(sound_latch_r);
85//   DECLARE_WRITE8_MEMBER(sample_bank_w);
86
4587   required_device<decobsmt_device> m_decobsmt;
88//   required_device<msm5205_device> m_msm5205;
89//   required_memory_bank m_sample_bank;
90//   UINT8 m_sample_data;
91//   bool m_more_data;
92   bool m_nmi_enable;
93//   bool m_is_alpha3;
4694
4795protected:
4896
4997   // driver_device overrides
5098   virtual void machine_reset();
99private:
100   UINT32 m_segment1;
101   UINT32 m_segment2;
102   UINT8 m_strobe;
103   UINT8 m_kbdrow;
104   UINT8 m_diag;
105   bool m_ca1;
106   emu_timer* m_irq_timer;
107   bool m_irq_active;
108   UINT8 m_sound_data;
109
51110public:
52111   DECLARE_DRIVER_INIT(de_3);
53112};
r23905r23906
55114
56115static ADDRESS_MAP_START( de_3_map, AS_PROGRAM, 8, de_3_state )
57116   AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram")
58//   AM_RANGE(0x2100, 0x2103) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids
59//   AM_RANGE(0x2200, 0x2200) AM_WRITE(sol3_w) // solenoids
60//   AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps
61//   AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display
62//   AM_RANGE(0x2c00, 0x2c03) AM_DEVREADWRITE("pia2c", pia6821_device, read, write) // alphanumeric display
63//   AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs
64//   AM_RANGE(0x3400, 0x3403) AM_DEVREADWRITE("pia34", pia6821_device, read, write) // widget
117   AM_RANGE(0x2100, 0x2103) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids
118   AM_RANGE(0x2200, 0x2200) AM_WRITE(sol3_w) // solenoids
119   AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps
120   AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display
121   AM_RANGE(0x2c00, 0x2c03) AM_DEVREADWRITE("pia2c", pia6821_device, read, write) // alphanumeric display
122   AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs
123   AM_RANGE(0x3400, 0x3403) AM_DEVREADWRITE("pia34", pia6821_device, read, write) // widget
65124   AM_RANGE(0x4000, 0xffff) AM_ROM
66125ADDRESS_MAP_END
67126
68static ADDRESS_MAP_START( de_3_audio_map, AS_PROGRAM, 8, de_3_state )
69   AM_RANGE(0x0000, 0xffff) AM_NOP
70ADDRESS_MAP_END
127static INPUT_PORTS_START( de_3 )
128   PORT_START("INP0")
129   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
71130
72static INPUT_PORTS_START( de_3 )
131   PORT_START("INP1")
132   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_TILT )
133   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER )
134   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START )
135   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 )
136   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
137   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
138   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER )
139   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER )
140
141   PORT_START("INP2")
142   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A)
143   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S)
144   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D)
145   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F)
146   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_G)
147   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_H)
148   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_J)
149   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_K)
150
151   PORT_START("INP4")
152   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L)
153   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Z)
154   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_C)
155   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_V)
156   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_B)
157   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_N)
158   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_M)
159   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA)
160
161   PORT_START("INP8")
162   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_STOP)
163   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH)
164   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COLON)
165   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE)
166   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X)
167   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_MINUS)
168   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS)
169   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE)
170
171   PORT_START("INP10")
172   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE)
173   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE)
174   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH)
175   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_ENTER)
176   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LEFT)
177   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_RIGHT)
178   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_UP)
179   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_DOWN)
180
181   PORT_START("INP20")
182   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Q)
183   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_W)
184   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_E)
185   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_R)
186   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Y)
187   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_U)
188   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_I)
189   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_O)
190
191   PORT_START("INP40")
192   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LALT)
193   PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNKNOWN )
194
195   PORT_START("INP80")
196   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
197
198   PORT_START("DIAGS")
199   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, de_3_state, audio_nmi, 1)
200   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Main Diag") PORT_CODE(KEYCODE_F2) PORT_CHANGED_MEMBER(DEVICE_SELF, de_3_state, main_nmi, 1)
201   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Advance") PORT_CODE(KEYCODE_0)
202   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Up/Down") PORT_CODE(KEYCODE_9) PORT_TOGGLE
203   PORT_CONFNAME( 0x10, 0x10, "Language" )
204   PORT_CONFSETTING( 0x00, "German" )
205   PORT_CONFSETTING( 0x10, "English" )
73206INPUT_PORTS_END
74207
208WRITE_LINE_MEMBER(de_3_state::pia_irq)
209{
210   if(state == CLEAR_LINE)
211   {
212      // restart IRQ timer
213      m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,E_CLOCK),1);
214      m_irq_active = false;
215   }
216   else
217   {
218      // disable IRQ timer while other IRQs are being handled
219      // (counter is reset every 32 cycles while a PIA IRQ is handled)
220      m_irq_timer->adjust(attotime::zero);
221      m_irq_active = true;
222   }
223}
224
225INPUT_CHANGED_MEMBER( de_3_state::main_nmi )
226{
227   // Diagnostic button sends a pulse to NMI pin
228   if (newval==CLEAR_LINE)
229      m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
230}
231
232INPUT_CHANGED_MEMBER( de_3_state::audio_nmi )
233{
234   // Not on DECO board?
235   // Diagnostic button sends a pulse to NMI pin
236//  if (newval==CLEAR_LINE)
237//      if(m_audiocpu)
238//          m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
239}
240
241void de_3_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
242{
243   switch(id)
244   {
245   case TIMER_IRQ:
246      if(param == 1)
247      {
248         m_maincpu->set_input_line(M6800_IRQ_LINE,ASSERT_LINE);
249         m_irq_timer->adjust(attotime::from_ticks(32,E_CLOCK),0);
250         m_irq_active = true;
251         m_pia28->ca1_w(BIT(ioport("DIAGS")->read(), 2));  // Advance
252         m_pia28->cb1_w(BIT(ioport("DIAGS")->read(), 3));  // Up/Down
253      }
254      else
255      {
256         m_maincpu->set_input_line(M6800_IRQ_LINE,CLEAR_LINE);
257         m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,E_CLOCK),1);
258         m_irq_active = false;
259         m_pia28->ca1_w(1);
260         m_pia28->cb1_w(1);
261      }
262      break;
263   }
264}
265
266
267static const pia6821_interface pia21_intf =
268{
269   DEVCB_NULL,      /* port A in */
270   DEVCB_NULL,     /* port B in */
271   DEVCB_NULL,     /* line CA1 in */
272   DEVCB_LINE_GND,     /* line CB1 in */
273   DEVCB_NULL,     /* line CA2 in */
274   DEVCB_NULL,     /* line CB2 in */
275   DEVCB_DRIVER_MEMBER(de_3_state, sol2_w),        /* port A out */
276   DEVCB_DRIVER_MEMBER(de_3_state, dac_w),     /* port B out */
277   DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia21_ca2_w),       /* line CA2 out */
278   DEVCB_NULL, //DEVCB_DRIVER_LINE_MEMBER(de_2_state, pia21_cb2_w),       /* line CB2 out */
279   DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq),       /* IRQA */
280   DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq)        /* IRQB */
281};
282
283// 6821 PIA at 0x2000
284WRITE8_MEMBER( de_3_state::sol3_w )
285{
286}
287
288WRITE8_MEMBER( de_3_state::sound_w )
289{
290   m_sound_data = data;
291   m_decobsmt->bsmt_comms_w(space,offset,m_sound_data);
292}
293
294WRITE_LINE_MEMBER( de_3_state::pia21_ca2_w )
295{
296// sound ns
297   m_ca1 = state;
298}
299
300// 6821 PIA at 0x2400
301WRITE8_MEMBER( de_3_state::lamp0_w )
302{
303   m_maincpu->set_input_line(M6800_IRQ_LINE, CLEAR_LINE);
304}
305
306static const pia6821_interface pia24_intf =
307{
308   DEVCB_NULL,     /* port A in */
309   DEVCB_NULL,     /* port B in */
310   DEVCB_LINE_GND,     /* line CA1 in */
311   DEVCB_LINE_GND,     /* line CB1 in */
312   DEVCB_LINE_VCC,     /* line CA2 in */
313   DEVCB_LINE_VCC,     /* line CB2 in */
314   DEVCB_DRIVER_MEMBER(de_3_state, lamp0_w),        /* port A out */
315   DEVCB_DRIVER_MEMBER(de_3_state, lamp1_w),        /* port B out */
316   DEVCB_NULL,     /* line CA2 out */
317   DEVCB_NULL, //DEVCB_DRIVER_LINE_MEMBER(de_2_state, pia24_cb2_w),       /* line CB2 out */
318   DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq),       /* IRQA */
319   DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq)        /* IRQB */
320};
321
322// 6821 PIA at 0x2800
323WRITE8_MEMBER( de_3_state::dig0_w )
324{
325//   static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0x58, 0x4c, 0x62, 0x69, 0x78, 0 }; // 7447
326//   data &= 0x7f;
327//   m_strobe = data & 15;
328//   m_diag = (data & 0x70) >> 4;
329//   output_set_digit_value(60, patterns[data>>4]); // diag digit
330//   m_segment1 = 0;
331//   m_segment2 = 0;
332}
333
334WRITE8_MEMBER( de_3_state::dig1_w )
335{
336//   m_segment2 |= data;
337//   m_segment2 |= 0x30000;
338//   if ((m_segment2 & 0x70000) == 0x30000)
339//   {
340//      if(m_is_alpha3)  // Alphanumeric type 2 uses 7 segment LEDs on the bottom row, type 3 uses 14 segment LEDs
341//         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));
342//      else
343//         output_set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 11, 15, 12, 10, 8, 14, 13, 9, 7, 6, 5, 4, 3, 2, 1, 0));
344//      m_segment2 |= 0x40000;
345//   }
346}
347
348READ8_MEMBER( de_3_state::pia28_w7_r )
349{
350   UINT8 ret = 0x80;
351
352   ret |= m_strobe;
353   ret |= m_diag << 4;
354
355   if(BIT(ioport("DIAGS")->read(), 4))  // W7 Jumper
356      ret &= ~0x80;
357
358   return ret;
359}
360
361static const pia6821_interface pia28_intf =
362{
363   DEVCB_DRIVER_MEMBER(de_3_state, pia28_w7_r),     /* port A in */
364   DEVCB_NULL,     /* port B in */
365   DEVCB_NULL,     /* line CA1 in */
366   DEVCB_NULL,     /* line CB1 in */
367   DEVCB_NULL,     /* line CA2 in */
368   DEVCB_NULL,     /* line CB2 in */
369   DEVCB_DRIVER_MEMBER(de_3_state, dig0_w),     /* port A out */
370   DEVCB_DRIVER_MEMBER(de_3_state, dig1_w),     /* port B out */
371   DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia28_ca2_w),       /* line CA2 out */  // comma 3+4
372   DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia28_cb2_w),       /* line CB2 out */  // comma 1+2
373   DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq),       /* IRQA */
374   DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq)        /* IRQB */
375};
376
377// 6821 PIA at 0x2c00
378WRITE8_MEMBER( de_3_state::pia2c_pa_w )
379{
380   /* DMD data */
381   if(m_dmdtype2)
382   {
383      m_dmdtype2->data_w(space,offset,data);
384      logerror("DMD: Data write %02x\n", data);
385   }
386//   m_segment1 |= (data<<8);
387//   m_segment1 |= 0x10000;
388//   if ((m_segment1 & 0x70000) == 0x30000)
389//   {
390//      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));
391//      m_segment1 |= 0x40000;
392//   }
393}
394
395READ8_MEMBER( de_3_state::pia2c_pb_r )
396{
397   if(m_dmdtype2)
398      return m_dmdtype2->busy_r(space,offset);
399   return 0xff;
400}
401
402WRITE8_MEMBER( de_3_state::pia2c_pb_w )
403{
404   /* DMD ctrl */
405   if(m_dmdtype2)
406   {
407      m_dmdtype2->ctrl_w(space,offset,data);
408      logerror("DMD: Control write %02x\n", data);
409   }
410
411//   m_segment1 |= data;
412//   m_segment1 |= 0x20000;
413//   if ((m_segment1 & 0x70000) == 0x30000)
414//   {
415//      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));
416//      m_segment1 |= 0x40000;
417//   }
418}
419
420static const pia6821_interface pia2c_intf =
421{
422   DEVCB_NULL,     /* port A in */
423   DEVCB_DRIVER_MEMBER(de_3_state, pia2c_pb_r),     /* port B in */
424   DEVCB_NULL,     /* line CA1 in */
425   DEVCB_NULL,     /* line CB1 in */
426   DEVCB_NULL,     /* line CA2 in */
427   DEVCB_NULL,     /* line CB2 in */
428   DEVCB_DRIVER_MEMBER(de_3_state, pia2c_pa_w),     /* port A out */
429   DEVCB_DRIVER_MEMBER(de_3_state, pia2c_pb_w),     /* port B out */
430   DEVCB_NULL,     /* line CA2 out */
431   DEVCB_NULL,     /* line CB2 out */
432   DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq),       /* IRQA */
433   DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq)        /* IRQB */
434};
435
436// 6821 PIA at 0x3000
437READ8_MEMBER( de_3_state::switch_r )
438{
439   char kbdrow[8];
440   sprintf(kbdrow,"INP%X",m_kbdrow);
441   return ~ioport(kbdrow)->read();
442}
443
444WRITE8_MEMBER( de_3_state::switch_w )
445{
446   m_kbdrow = data;
447}
448
449static const pia6821_interface pia30_intf =
450{
451   DEVCB_DRIVER_MEMBER(de_3_state, switch_r),       /* port A in */
452   DEVCB_NULL,     /* port B in */
453   DEVCB_LINE_GND,     /* line CA1 in */
454   DEVCB_LINE_GND,     /* line CB1 in */
455   DEVCB_LINE_VCC,     /* line CA2 in */
456   DEVCB_LINE_VCC,     /* line CB2 in */
457   DEVCB_NULL,     /* port A out */
458   DEVCB_DRIVER_MEMBER(de_3_state, switch_w),       /* port B out */
459   DEVCB_NULL,     /* line CA2 out */
460   DEVCB_NULL, //DEVCB_DRIVER_LINE_MEMBER(de_2_state, pia30_cb2_w),       /* line CB2 out */
461   DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq),       /* IRQA */
462   DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq)        /* IRQB */
463};
464
465// 6821 PIA at 0x3400
466WRITE8_MEMBER( de_3_state::pia34_pa_w )
467{
468   // Not connected?
469//   m_segment2 |= (data<<8);
470//   m_segment2 |= 0x10000;
471//   if ((m_segment2 & 0x70000) == 0x30000)
472//   {
473//      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));
474//      m_segment2 |= 0x40000;
475//   }
476}
477
478READ8_MEMBER( de_3_state::dmd_status_r )
479{
480   if(m_dmdtype2)
481   {
482      return m_dmdtype2->status_r(space,offset);
483   }
484   return 0;
485}
486
487static const pia6821_interface pia34_intf =
488{
489   DEVCB_DRIVER_MEMBER(de_3_state, dmd_status_r),     /* port A in */
490   DEVCB_NULL,     /* port B in */
491   DEVCB_NULL,     /* line CA1 in */
492   DEVCB_NULL,     /* line CB1 in */
493   DEVCB_NULL,     /* line CA2 in */
494   DEVCB_NULL,     /* line CB2 in */
495   DEVCB_DRIVER_MEMBER(de_3_state, pia34_pa_w),     /* port A out */
496   DEVCB_DRIVER_MEMBER(de_3_state, sound_w),     /* port B out */
497   DEVCB_NULL,     /* line CA2 out */
498   DEVCB_NULL, //DEVCB_DRIVER_LINE_MEMBER(de_2_state, pia34_cb2_w),       /* line CB2 out */
499   DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq),       /* IRQA */
500   DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq)        /* IRQB */
501};
502
503static const decodmd_intf decodmd_interface =
504{
505   ":gfx3"  // region containing DMD ROM data
506};
507
75508void de_3_state::machine_reset()
76509{
77510}
78511
79512DRIVER_INIT_MEMBER(de_3_state,de_3)
80513{
514   m_irq_timer = timer_alloc(TIMER_IRQ);
515   m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,E_CLOCK),1);
516   m_irq_active = false;
81517}
82518
83519static MACHINE_CONFIG_START( de_3, de_3_state )
r23905r23906
88524   MCFG_FRAGMENT_ADD( genpin_audio )
89525
90526   /* Devices */
91//   MCFG_PIA6821_ADD("pia21", pia21_intf)
92//   MCFG_PIA6821_ADD("pia24", pia24_intf)
93//   MCFG_PIA6821_ADD("pia28", pia28_intf)
94//   MCFG_PIA6821_ADD("pia2c", pia2c_intf)
95//   MCFG_PIA6821_ADD("pia30", pia30_intf)
96//   MCFG_PIA6821_ADD("pia34", pia34_intf)
527   MCFG_PIA6821_ADD("pia21", pia21_intf)
528   MCFG_PIA6821_ADD("pia24", pia24_intf)
529   MCFG_PIA6821_ADD("pia28", pia28_intf)
530   MCFG_PIA6821_ADD("pia2c", pia2c_intf)
531   MCFG_PIA6821_ADD("pia30", pia30_intf)
532   MCFG_PIA6821_ADD("pia34", pia34_intf)
97533   MCFG_NVRAM_ADD_1FILL("nvram")
98534
99   /* sound hardware */
100   MCFG_CPU_ADD("audiocpu", M6809E, 8000000)
101   MCFG_CPU_PROGRAM_MAP(de_3_audio_map)
102
103535   MCFG_DECOBSMT_ADD(DECOBSMT_TAG)
104536
105   // TODO: DMD video controller (68B09E+DMD display)
537//   MCFG_SPEAKER_STANDARD_MONO("bg")
538//   MCFG_YM2151_ADD("ym2151", 3580000)
539//   MCFG_YM2151_IRQ_HANDLER(WRITELINE(de_2_state, ym2151_irq_w))
540//   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50)
541//   MCFG_SOUND_ADD("msm5205", MSM5205, 384000)
542//   MCFG_SOUND_CONFIG(msm5205_intf)
543//   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50)
106544
107545MACHINE_CONFIG_END
108546
547static MACHINE_CONFIG_DERIVED( de_3_dmd2, de_3 )
548   MCFG_DECODMD_TYPE2_ADD("decodmd",decodmd_interface)
549MACHINE_CONFIG_END
550
109551/*-------------------------------------------------------------
110552/ Adventures of Rocky and Bullwinkle and Friends - CPU Rev 3b /DMD  Type 2 512K Rom - 64K CPU Rom
111553/------------------------------------------------------------*/
r23905r23906
115557   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
116558   ROM_REGION(0x80000, "gfx3", 0)
117559   ROM_LOAD("rbdspa.300", 0x00000, 0x80000, CRC(a5dc2f72) SHA1(60bbb4914ff56ad48c86c3550e094a3d9d70c700))
118   ROM_REGION(0x010000, "audiocpu", 0)
560   ROM_REGION(0x010000, "soundcpu", 0)
119561   ROM_LOAD("rab.u7", 0x0000, 0x10000, CRC(b232e630) SHA1(880fffc395d7c24bdea4e7e8000afba7ea71c094))
120562   ROM_REGION(0x1000000, "bsmt", 0)
121563   ROM_LOAD("rab.u17", 0x000000, 0x80000, CRC(7f2b53b8) SHA1(fd4f4ed1ed343069ffc534fe4b20026fe7403220))
r23905r23906
128570   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
129571   ROM_REGION(0x80000, "gfx3", 0)
130572   ROM_LOAD("rbdspa.130", 0x00000, 0x80000, CRC(b6e2176e) SHA1(9ccbb30dc0f386fcf5e5255c9f80c720e601565f))
131   ROM_REGION(0x010000, "audiocpu", 0)
573   ROM_REGION(0x010000, "soundcpu", 0)
132574   ROM_LOAD("rab.u7", 0x0000, 0x10000, CRC(b232e630) SHA1(880fffc395d7c24bdea4e7e8000afba7ea71c094))
133575   ROM_REGION(0x1000000, "bsmt", 0)
134576   ROM_LOAD("rab.u17", 0x000000, 0x80000, CRC(7f2b53b8) SHA1(fd4f4ed1ed343069ffc534fe4b20026fe7403220))
r23905r23906
141583   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
142584   ROM_REGION(0x80000, "gfx3", 0)
143585   ROM_LOAD("rabdspsp.103", 0x00000, 0x80000, CRC(02624948) SHA1(069ef69d6ce193d73954935b378230c05b83b8fc))
144   ROM_REGION(0x010000, "audiocpu", 0)
586   ROM_REGION(0x010000, "soundcpu", 0)
145587   ROM_LOAD("rab.u7", 0x0000, 0x10000, CRC(b232e630) SHA1(880fffc395d7c24bdea4e7e8000afba7ea71c094))
146588   ROM_REGION(0x1000000, "bsmt", 0)
147589   ROM_LOAD("rab.u17", 0x000000, 0x80000, CRC(7f2b53b8) SHA1(fd4f4ed1ed343069ffc534fe4b20026fe7403220))
r23905r23906
158600   ROM_REGION(0x80000, "gfx3", 0)
159601   ROM_LOAD("asdspu12.bin", 0x00000, 0x40000, CRC(5dd81be6) SHA1(20e5ec19550e3795670c5ee4e8e92fae0499fdb8))
160602   ROM_LOAD("asdspu14.bin", 0x40000, 0x40000, CRC(3f2204ca) SHA1(69523d6c5555d391ab24912f4c4c78aa09a400c1))
161   ROM_REGION(0x010000, "audiocpu", 0)
603   ROM_REGION(0x010000, "soundcpu", 0)
162604   ROM_LOAD("assndu7.bin", 0x0000, 0x10000, CRC(f0414a0d) SHA1(b1f940be05426a39f4e5ea0802fd03a7ce055ebc))
163605   ROM_REGION(0x1000000, "bsmt", 0)
164606   ROM_LOAD("assndu17.bin", 0x000000, 0x80000, CRC(e151b1fe) SHA1(d7d97499d93885a4f7ebd7bb302731bc5bc456ff))
r23905r23906
176618   ROM_REGION(0x400, "user3", ROMREGION_ERASEFF)
177619   ROM_REGION(0x20000, "gfx3", 0)
178620   ROM_LOAD("batdsp.102", 0x00000, 0x20000, CRC(4c4120e7) SHA1(ba7d78c933f6709b3db4efcca5e7bb9099074550))
179   ROM_REGION(0x010000, "audiocpu", 0)
621   ROM_REGION(0x010000, "soundcpu", 0)
180622   ROM_LOAD("batman.u7", 0x8000, 0x8000, CRC(b2e88bf5) SHA1(28f814ea73f8eefd1bb5499a599e67a6850c92c0))
181623   ROM_REGION(0x1000000, "bsmt", 0)
182624   ROM_LOAD("batman.u17", 0x000000, 0x40000, CRC(b84914dd) SHA1(333d88033428705cbd0a40d70d938c0021bb0015))
r23905r23906
191633   ROM_REGION(0x400, "user3", ROMREGION_ERASEFF)
192634   ROM_REGION(0x20000, "gfx3", 0)
193635   ROM_LOAD("batdsp.102", 0x00000, 0x20000, CRC(4c4120e7) SHA1(ba7d78c933f6709b3db4efcca5e7bb9099074550))
194   ROM_REGION(0x010000, "audiocpu", 0)
636   ROM_REGION(0x010000, "soundcpu", 0)
195637   ROM_LOAD("batman.u7", 0x8000, 0x8000, CRC(b2e88bf5) SHA1(28f814ea73f8eefd1bb5499a599e67a6850c92c0))
196638   ROM_REGION(0x1000000, "bsmt", 0)
197639   ROM_LOAD("batman.u17", 0x000000, 0x40000, CRC(b84914dd) SHA1(333d88033428705cbd0a40d70d938c0021bb0015))
r23905r23906
206648   ROM_REGION(0x400, "user3", ROMREGION_ERASEFF)
207649   ROM_REGION(0x20000, "gfx3", 0)
208650   ROM_LOAD("bat_dspg.104", 0x00000, 0x20000, CRC(1581819f) SHA1(88facfad2e74dd44b71fd19df685a4c2378d26de))
209   ROM_REGION(0x010000, "audiocpu", 0)
651   ROM_REGION(0x010000, "soundcpu", 0)
210652   ROM_LOAD("batman.u7", 0x8000, 0x8000, CRC(b2e88bf5) SHA1(28f814ea73f8eefd1bb5499a599e67a6850c92c0))
211653   ROM_REGION(0x1000000, "bsmt", 0)
212654   ROM_LOAD("batman.u17", 0x000000, 0x40000, CRC(b84914dd) SHA1(333d88033428705cbd0a40d70d938c0021bb0015))
r23905r23906
221663   ROM_REGION(0x400, "user3", ROMREGION_ERASEFF)
222664   ROM_REGION(0x20000, "gfx3", 0)
223665   ROM_LOAD("batdsp.106", 0x00000, 0x20000, CRC(4c4120e7) SHA1(ba7d78c933f6709b3db4efcca5e7bb9099074550))
224   ROM_REGION(0x010000, "audiocpu", 0)
666   ROM_REGION(0x010000, "soundcpu", 0)
225667   ROM_LOAD("batman.u7", 0x8000, 0x8000, CRC(b2e88bf5) SHA1(28f814ea73f8eefd1bb5499a599e67a6850c92c0))
226668   ROM_REGION(0x1000000, "bsmt", 0)
227669   ROM_LOAD("batman.u17", 0x000000, 0x40000, CRC(b84914dd) SHA1(333d88033428705cbd0a40d70d938c0021bb0015))
r23905r23906
240682   ROM_REGION(0x20000, "gfx3", 0)
241683   ROM_LOAD("chkpntds.512", 0x00000, 0x10000, CRC(14d9c6d6) SHA1(5470a4ebe7bc4a056f75aa1fffe3a4e3e24457c6))
242684   ROM_RELOAD(0x10000, 0x10000)
243   ROM_REGION(0x10000, "audiocpu", 0)
685   ROM_REGION(0x10000, "soundcpu", 0)
244686   ROM_LOAD("chkpntf7.rom", 0x8000, 0x8000, CRC(e6f6d716) SHA1(a034eb94acb174f7dbe192a55cfd00715ca85a75))
245687   ROM_REGION(0x1000000, "bsmt", 0)
246688   ROM_LOAD("chkpntf6.rom", 0x00000, 0x20000, CRC(2d08043e) SHA1(476c9945354e733bfc9a854760ca8cfa3bc62294))
r23905r23906
256698   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
257699   ROM_REGION(0x80000, "gfx3", 0)
258700   ROM_LOAD("gnrdispa.300", 0x00000, 0x80000, CRC(4abf29e3) SHA1(595328e0f92a6e1972d71c56505a5dd07a373ef5))
259   ROM_REGION(0x010000, "audiocpu", 0)
701   ROM_REGION(0x010000, "soundcpu", 0)
260702   ROM_LOAD("gnru7.snd", 0x0000, 0x10000, CRC(3b9de915) SHA1(a901a1f37bf5433c819393c4355f9d13164b32ce))
261703   ROM_REGION(0x1000000, "bsmt", 0)
262704   ROM_LOAD("gnru17.snd", 0x000000, 0x80000, CRC(3d3219d6) SHA1(ac4a6d3eff0cdd02b8c79dddcb8fec2e22faa9b9))
r23905r23906
275717   ROM_REGION(0x400, "user3", ROMREGION_ERASEFF)
276718   ROM_REGION(0x20000, "gfx3", 0)
277719   ROM_LOAD("hokdspa.401", 0x00000, 0x20000, CRC(59a07eb5) SHA1(d1ca41ce417f1772fe4da1eb37077f924b66ad36))
278   ROM_REGION(0x010000, "audiocpu", 0)
720   ROM_REGION(0x010000, "soundcpu", 0)
279721   ROM_LOAD("hooksnd.u7", 0x8000, 0x8000, CRC(642f45b3) SHA1(a4b2084f32e52a596547384906281d04424332fc))
280722   ROM_REGION(0x1000000, "bsmt", 0)
281723   ROM_LOAD("hook-voi.u17", 0x000000, 0x40000, CRC(6ea9fcd2) SHA1(bffc66df542e06dedddaa403b5513446d9d6fc8c))
r23905r23906
289731   ROM_REGION(0x400, "user3", ROMREGION_ERASEFF)
290732   ROM_REGION(0x20000, "gfx3", 0)
291733   ROM_LOAD("hokdspa.401", 0x00000, 0x20000, CRC(59a07eb5) SHA1(d1ca41ce417f1772fe4da1eb37077f924b66ad36))
292   ROM_REGION(0x010000, "audiocpu", 0)
734   ROM_REGION(0x010000, "soundcpu", 0)
293735   ROM_LOAD("hooksnd.u7", 0x8000, 0x8000, CRC(642f45b3) SHA1(a4b2084f32e52a596547384906281d04424332fc))
294736   ROM_REGION(0x1000000, "bsmt", 0)
295737   ROM_LOAD("hook-voi.u17", 0x000000, 0x40000, CRC(6ea9fcd2) SHA1(bffc66df542e06dedddaa403b5513446d9d6fc8c))
r23905r23906
303745   ROM_REGION(0x400, "user3", ROMREGION_ERASEFF)
304746   ROM_REGION(0x20000, "gfx3", 0)
305747   ROM_LOAD("hokdspa.401", 0x00000, 0x20000, CRC(59a07eb5) SHA1(d1ca41ce417f1772fe4da1eb37077f924b66ad36))
306   ROM_REGION(0x010000, "audiocpu", 0)
748   ROM_REGION(0x010000, "soundcpu", 0)
307749   ROM_LOAD("hooksnd.u7", 0x8000, 0x8000, CRC(642f45b3) SHA1(a4b2084f32e52a596547384906281d04424332fc))
308750   ROM_REGION(0x1000000, "bsmt", 0)
309751   ROM_LOAD("hook-voi.u17", 0x000000, 0x40000, CRC(6ea9fcd2) SHA1(bffc66df542e06dedddaa403b5513446d9d6fc8c))
r23905r23906
319761   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
320762   ROM_REGION(0x80000, "gfx3", 0)
321763   ROM_LOAD("jpdspa.510", 0x00000, 0x80000, CRC(9ca61e3c) SHA1(38ae472f38e6fc33671e9a276313208e5ccd8640))
322   ROM_REGION(0x010000, "audiocpu", 0)
764   ROM_REGION(0x010000, "soundcpu", 0)
323765   ROM_LOAD("jpu7.dat", 0x0000, 0x10000, CRC(f3afcf13) SHA1(64e12f9d42c00ae08a4584b2ebea475566b90c13))
324766   ROM_REGION(0x1000000, "bsmt", 0)
325767   ROM_LOAD("jpu17.dat", 0x000000, 0x80000, CRC(38135a23) SHA1(7c284c17783269824a3d3e83c4cd8ead27133309))
r23905r23906
332774   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
333775   ROM_REGION(0x80000, "gfx3", 0)
334776   ROM_LOAD("jpdspa.501", 0x00000, 0x80000, CRC(04a87d42) SHA1(e13df9a63ec77ec6f97b681ed99216ef3f3af691))
335   ROM_REGION(0x010000, "audiocpu", 0)
777   ROM_REGION(0x010000, "soundcpu", 0)
336778   ROM_LOAD("jpu7.dat", 0x0000, 0x10000, CRC(f3afcf13) SHA1(64e12f9d42c00ae08a4584b2ebea475566b90c13))
337779   ROM_REGION(0x1000000, "bsmt", 0)
338780   ROM_LOAD("jpu17.dat", 0x000000, 0x80000, CRC(38135a23) SHA1(7c284c17783269824a3d3e83c4cd8ead27133309))
r23905r23906
345787   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
346788   ROM_REGION(0x80000, "gfx3", 0)
347789   ROM_LOAD("jpdspg.501", 0x00000, 0x80000, CRC(3b524bfe) SHA1(ea6ae6f8fc8379f311fd7ef456f0d6711c4e35c5))
348   ROM_REGION(0x010000, "audiocpu", 0)
790   ROM_REGION(0x010000, "soundcpu", 0)
349791   ROM_LOAD("jpu7.dat", 0x0000, 0x10000, CRC(f3afcf13) SHA1(64e12f9d42c00ae08a4584b2ebea475566b90c13))
350792   ROM_REGION(0x1000000, "bsmt", 0)
351793   ROM_LOAD("jpu17.dat", 0x000000, 0x80000, CRC(38135a23) SHA1(7c284c17783269824a3d3e83c4cd8ead27133309))
r23905r23906
361803   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
362804   ROM_REGION(0x80000, "gfx3", 0)
363805   ROM_LOAD("lahdispa.106", 0x00000, 0x80000, CRC(ca6cfec5) SHA1(5e2081387d76bed17c14120cd347d6aaf435276b))
364   ROM_REGION(0x010000, "audiocpu", 0)
806   ROM_REGION(0x010000, "soundcpu", 0)
365807   ROM_LOAD("lahsnd.u7", 0x0000, 0x10000, CRC(0279c45b) SHA1(14daf6b711d1936352209e90240f51812ebe76e0))
366808   ROM_REGION(0x1000000, "bsmt", 0)
367809   ROM_LOAD("lahsnd.u17", 0x000000, 0x80000, CRC(d0c15fa6) SHA1(5dcd13b578fa53c82353cda5aa774ca216c5ddfe))
r23905r23906
374816   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
375817   ROM_REGION(0x80000, "gfx3", 0)
376818   ROM_LOAD("lahdispl.102", 0x00000, 0x80000, CRC(3482c349) SHA1(8f03ba28132ea5159d3193b3adb7b4a6a43046c6))
377   ROM_REGION(0x010000, "audiocpu", 0)
819   ROM_REGION(0x010000, "soundcpu", 0)
378820   ROM_LOAD("lahsnd.u7", 0x0000, 0x10000, CRC(0279c45b) SHA1(14daf6b711d1936352209e90240f51812ebe76e0))
379821   ROM_REGION(0x1000000, "bsmt", 0)
380822   ROM_LOAD("lahsnd.u17", 0x000000, 0x80000, CRC(d0c15fa6) SHA1(5dcd13b578fa53c82353cda5aa774ca216c5ddfe))
r23905r23906
387829   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
388830   ROM_REGION(0x80000, "gfx3", 0)
389831   ROM_LOAD("lahdispl.104", 0x00000, 0x80000, CRC(6b1e51a7) SHA1(ad17507b63f2da8aa0651401ccb8d449c15aa46c))
390   ROM_REGION(0x010000, "audiocpu", 0)
832   ROM_REGION(0x010000, "soundcpu", 0)
391833   ROM_LOAD("lahsnd.u7", 0x0000, 0x10000, CRC(0279c45b) SHA1(14daf6b711d1936352209e90240f51812ebe76e0))
392834   ROM_REGION(0x1000000, "bsmt", 0)
393835   ROM_LOAD("lahsnd.u17", 0x000000, 0x80000, CRC(d0c15fa6) SHA1(5dcd13b578fa53c82353cda5aa774ca216c5ddfe))
r23905r23906
400842   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
401843   ROM_REGION(0x80000, "gfx3", 0)
402844   ROM_LOAD("lahdispa.106", 0x00000, 0x80000, CRC(ca6cfec5) SHA1(5e2081387d76bed17c14120cd347d6aaf435276b))
403   ROM_REGION(0x010000, "audiocpu", 0)
845   ROM_REGION(0x010000, "soundcpu", 0)
404846   ROM_LOAD("lahsnd.u7", 0x0000, 0x10000, CRC(0279c45b) SHA1(14daf6b711d1936352209e90240f51812ebe76e0))
405847   ROM_REGION(0x1000000, "bsmt", 0)
406848   ROM_LOAD("lahsnd.u17", 0x000000, 0x80000, CRC(d0c15fa6) SHA1(5dcd13b578fa53c82353cda5aa774ca216c5ddfe))
r23905r23906
417859   ROM_REGION(0x80000, "gfx3", 0)
418860   ROM_LOAD("lw3drom1.a26", 0x00000, 0x40000, CRC(44a4cf81) SHA1(c7f3e3d5fbe930650e48423c8ba0ac484ce0640c))
419861   ROM_LOAD("lw3drom0.a26", 0x40000, 0x40000, CRC(22932ed5) SHA1(395aa376cd8562de7956a6e34b8747e7cf81f935))
420   ROM_REGION(0x010000, "audiocpu", 0)
862   ROM_REGION(0x010000, "soundcpu", 0)
421863   ROM_LOAD("lw3u7.dat", 0x8000, 0x8000, CRC(ba845ac3) SHA1(bb50413ace1885870cb3817edae478904b0eefb8))
422864   ROM_REGION(0x1000000, "bsmt", 0)
423865   ROM_LOAD("lw3u17.dat", 0x000000, 0x40000, CRC(e34cf2fc) SHA1(417c83ded6637f891c8bb42b32d6898c90a0e5cf))
r23905r23906
431873   ROM_REGION(0x80000, "gfx3", 0)
432874   ROM_LOAD("lw3drom1.a26", 0x00000, 0x40000, CRC(44a4cf81) SHA1(c7f3e3d5fbe930650e48423c8ba0ac484ce0640c))
433875   ROM_LOAD("lw3drom0.a26", 0x40000, 0x40000, CRC(22932ed5) SHA1(395aa376cd8562de7956a6e34b8747e7cf81f935))
434   ROM_REGION(0x010000, "audiocpu", 0)
876   ROM_REGION(0x010000, "soundcpu", 0)
435877   ROM_LOAD("lw3u7.dat", 0x8000, 0x8000, CRC(ba845ac3) SHA1(bb50413ace1885870cb3817edae478904b0eefb8))
436878   ROM_REGION(0x1000000, "bsmt", 0)
437879   ROM_LOAD("lw3u17.dat", 0x000000, 0x40000, CRC(e34cf2fc) SHA1(417c83ded6637f891c8bb42b32d6898c90a0e5cf))
r23905r23906
445887   ROM_REGION(0x80000, "gfx3", 0)
446888   ROM_LOAD("lw3dsp1.205", 0x00000, 0x40000, CRC(9dfeffb4) SHA1(f62f2a884da68b4dbfe7da071058dc8cd1766c36))
447889   ROM_LOAD("lw3dsp0.205", 0x40000, 0x40000, CRC(bd8156f1) SHA1(b18214af1b79cca79bdc634c175c3bf7d0052843))
448   ROM_REGION(0x010000, "audiocpu", 0)
890   ROM_REGION(0x010000, "soundcpu", 0)
449891   ROM_LOAD("lw3u7.dat", 0x8000, 0x8000, CRC(ba845ac3) SHA1(bb50413ace1885870cb3817edae478904b0eefb8))
450892   ROM_REGION(0x1000000, "bsmt", 0)
451893   ROM_LOAD("lw3u17.dat", 0x000000, 0x40000, CRC(e34cf2fc) SHA1(417c83ded6637f891c8bb42b32d6898c90a0e5cf))
r23905r23906
459901   ROM_REGION(0x80000, "gfx3", 0)
460902   ROM_LOAD("lw3dsp1.204", 0x00000, 0x40000, CRC(1ba79363) SHA1(46d489a1190533c73370acd8a48cef60d12f87ce))
461903   ROM_LOAD("lw3dsp0.204", 0x40000, 0x40000, CRC(c74d3cf2) SHA1(076ee9b2e3cad0b8058ac0c70f5ffe7e29f3eff5))
462   ROM_REGION(0x010000, "audiocpu", 0)
904   ROM_REGION(0x010000, "soundcpu", 0)
463905   ROM_LOAD("lw3u7.dat", 0x8000, 0x8000, CRC(ba845ac3) SHA1(bb50413ace1885870cb3817edae478904b0eefb8))
464906   ROM_REGION(0x1000000, "bsmt", 0)
465907   ROM_LOAD("lw3u17.dat", 0x000000, 0x40000, CRC(e34cf2fc) SHA1(417c83ded6637f891c8bb42b32d6898c90a0e5cf))
r23905r23906
476918   ROM_REGION(0x400, "user3", ROMREGION_ERASEFF)
477919   ROM_REGION(0x20000, "gfx3", 0)
478920   ROM_LOAD("trekdspa.109", 0x00000, 0x20000, CRC(a7e7d44d) SHA1(d26126310b8b316ca161d4202645de8fb6359822))
479   ROM_REGION(0x010000, "audiocpu", 0)
921   ROM_REGION(0x010000, "soundcpu", 0)
480922   ROM_LOAD("trek.u7", 0x8000, 0x8000, CRC(f137abbb) SHA1(11731170ed4f04dd8af05d8f79ad727b0e0104d7))
481923   ROM_REGION(0x1000000, "bsmt", 0)
482924   ROM_LOAD("trek.u17", 0x000000, 0x40000, CRC(531545da) SHA1(905f34173db0e04eaf5236191186ea209b8a0a34))
r23905r23906
490932   ROM_REGION(0x400, "user3", ROMREGION_ERASEFF)
491933   ROM_REGION(0x20000, "gfx3", 0)
492934   ROM_LOAD("trekdspa.109", 0x00000, 0x20000, CRC(a7e7d44d) SHA1(d26126310b8b316ca161d4202645de8fb6359822))
493   ROM_REGION(0x010000, "audiocpu", 0)
935   ROM_REGION(0x010000, "soundcpu", 0)
494936   ROM_LOAD("trek.u7", 0x8000, 0x8000, CRC(f137abbb) SHA1(11731170ed4f04dd8af05d8f79ad727b0e0104d7))
495937   ROM_REGION(0x1000000, "bsmt", 0)
496938   ROM_LOAD("trek.u17", 0x000000, 0x40000, CRC(531545da) SHA1(905f34173db0e04eaf5236191186ea209b8a0a34))
r23905r23906
504946   ROM_REGION(0x400, "user3", ROMREGION_ERASEFF)
505947   ROM_REGION(0x20000, "gfx3", 0)
506948   ROM_LOAD("trekdsp.106", 0x00000, 0x20000, CRC(dc3bf312) SHA1(3262d6604d1dcd1dc738bc3f919a3319b783fd73))
507   ROM_REGION(0x010000, "audiocpu", 0)
949   ROM_REGION(0x010000, "soundcpu", 0)
508950   ROM_LOAD("trek.u7", 0x8000, 0x8000, CRC(f137abbb) SHA1(11731170ed4f04dd8af05d8f79ad727b0e0104d7))
509951   ROM_REGION(0x1000000, "bsmt", 0)
510952   ROM_LOAD("trek.u17", 0x000000, 0x40000, CRC(531545da) SHA1(905f34173db0e04eaf5236191186ea209b8a0a34))
r23905r23906
518960   ROM_REGION(0x400, "user3", ROMREGION_ERASEFF)
519961   ROM_REGION(0x20000, "gfx3", 0)
520962   ROM_LOAD("trekdsp.106", 0x00000, 0x20000, CRC(dc3bf312) SHA1(3262d6604d1dcd1dc738bc3f919a3319b783fd73))
521   ROM_REGION(0x010000, "audiocpu", 0)
963   ROM_REGION(0x010000, "soundcpu", 0)
522964   ROM_LOAD("trek.u7", 0x8000, 0x8000, CRC(f137abbb) SHA1(11731170ed4f04dd8af05d8f79ad727b0e0104d7))
523965   ROM_REGION(0x1000000, "bsmt", 0)
524966   ROM_LOAD("trek.u17", 0x000000, 0x40000, CRC(531545da) SHA1(905f34173db0e04eaf5236191186ea209b8a0a34))
r23905r23906
532974   ROM_REGION(0x400, "user3", ROMREGION_ERASEFF)
533975   ROM_REGION(0x20000, "gfx3", 0)
534976   ROM_LOAD("trekadsp.bin", 0x00000, 0x20000, CRC(54681627) SHA1(4251fa0568d2e869b44358471a3d4a4e88443954))
535   ROM_REGION(0x010000, "audiocpu", 0)
977   ROM_REGION(0x010000, "soundcpu", 0)
536978   ROM_LOAD("trek.u7", 0x8000, 0x8000, CRC(f137abbb) SHA1(11731170ed4f04dd8af05d8f79ad727b0e0104d7))
537979   ROM_REGION(0x1000000, "bsmt", 0)
538980   ROM_LOAD("trek.u17", 0x000000, 0x40000, CRC(531545da) SHA1(905f34173db0e04eaf5236191186ea209b8a0a34))
r23905r23906
548990   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
549991   ROM_REGION(0x80000, "gfx3", 0)
550992   ROM_LOAD("sw4mrom.a15", 0x00000, 0x80000, CRC(00c87952) SHA1(cd2f491f03fcb3e3ceff7ee7f678aa1957a5d14b))
551   ROM_REGION(0x010000, "audiocpu", 0)
993   ROM_REGION(0x010000, "soundcpu", 0)
552994   ROM_LOAD("s-wars.u7", 0x8000, 0x8000, CRC(cefa19d5) SHA1(7ddf9cc85ab601514305bc46083a07a3d087b286))
553995   ROM_REGION(0x1000000, "bsmt", 0)
554996   ROM_LOAD("s-wars.u17", 0x000000, 0x80000, CRC(7950a147) SHA1(f5bcd5cf6b35f9e4f14d62b084495c3a743d92a1))
r23905r23906
5611003   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
5621004   ROM_REGION(0x80000, "gfx3", 0)
5631005   ROM_LOAD("swdsp_g.102", 0x00000, 0x80000, CRC(afdfbfc4) SHA1(1c3cd90b9cd4f88ee2b556abef863a0ae9a10056))
564   ROM_REGION(0x010000, "audiocpu", 0)
1006   ROM_REGION(0x010000, "soundcpu", 0)
5651007   ROM_LOAD("s-wars.u7", 0x8000, 0x8000, CRC(cefa19d5) SHA1(7ddf9cc85ab601514305bc46083a07a3d087b286))
5661008   ROM_REGION(0x1000000, "bsmt", 0)
5671009   ROM_LOAD("s-wars.u17", 0x000000, 0x80000, CRC(7950a147) SHA1(f5bcd5cf6b35f9e4f14d62b084495c3a743d92a1))
r23905r23906
5751017   ROM_REGION(0x80000, "gfx3", 0)
5761018   ROM_LOAD("swrom1.a14", 0x00000, 0x40000, CRC(4d577828) SHA1(8b1f302621fe2ee13a067b9c97e3dc33f4519cea))
5771019   ROM_LOAD("swrom0.a14", 0x40000, 0x40000, CRC(104e5a6b) SHA1(b6a9e32f8aec078665faf2ba9ba4f9f51f68cea8))
578   ROM_REGION(0x010000, "audiocpu", 0)
1020   ROM_REGION(0x010000, "soundcpu", 0)
5791021   ROM_LOAD("s-wars.u7", 0x8000, 0x8000, CRC(cefa19d5) SHA1(7ddf9cc85ab601514305bc46083a07a3d087b286))
5801022   ROM_REGION(0x1000000, "bsmt", 0)
5811023   ROM_LOAD("s-wars.u17", 0x000000, 0x80000, CRC(7950a147) SHA1(f5bcd5cf6b35f9e4f14d62b084495c3a743d92a1))
r23905r23906
5881030   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
5891031   ROM_REGION(0x80000, "gfx3", 0)
5901032   ROM_LOAD("sw4mrom.a15", 0x00000, 0x80000, CRC(00c87952) SHA1(cd2f491f03fcb3e3ceff7ee7f678aa1957a5d14b))
591   ROM_REGION(0x010000, "audiocpu", 0)
1033   ROM_REGION(0x010000, "soundcpu", 0)
5921034   ROM_LOAD("s-wars.u7", 0x8000, 0x8000, CRC(cefa19d5) SHA1(7ddf9cc85ab601514305bc46083a07a3d087b286))
5931035   ROM_REGION(0x1000000, "bsmt", 0)
5941036   ROM_LOAD("s-wars.u17", 0x000000, 0x80000, CRC(7950a147) SHA1(f5bcd5cf6b35f9e4f14d62b084495c3a743d92a1))
r23905r23906
6011043   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
6021044   ROM_REGION(0x80000, "gfx3", 0)
6031045   ROM_LOAD("sw4mrom.a15", 0x00000, 0x80000, CRC(00c87952) SHA1(cd2f491f03fcb3e3ceff7ee7f678aa1957a5d14b))
604   ROM_REGION(0x010000, "audiocpu", 0)
1046   ROM_REGION(0x010000, "soundcpu", 0)
6051047   ROM_LOAD("s-wars.u7", 0x8000, 0x8000, CRC(cefa19d5) SHA1(7ddf9cc85ab601514305bc46083a07a3d087b286))
6061048   ROM_REGION(0x1000000, "bsmt", 0)
6071049   ROM_LOAD("s-wars.u17", 0x000000, 0x80000, CRC(7950a147) SHA1(f5bcd5cf6b35f9e4f14d62b084495c3a743d92a1))
r23905r23906
6171059   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
6181060   ROM_REGION(0x80000, "gfx3", 0)
6191061   ROM_LOAD("tftcdspa.301", 0x00000, 0x80000, CRC(3888d06f) SHA1(3d276df436a76c6e9bed6629114204dacd88245b))
620   ROM_REGION(0x010000, "audiocpu", 0)
1062   ROM_REGION(0x010000, "soundcpu", 0)
6211063   ROM_LOAD("sndu7.dat", 0x0000, 0x10000, CRC(7963740e) SHA1(fc1f150dcbab8af865a8ea624dfdcc03301f05e6))
6221064   ROM_REGION(0x1000000, "bsmt", 0)
6231065   ROM_LOAD("sndu17.dat", 0x000000, 0x80000, CRC(5c5d009a) SHA1(57d0307ea682eca5a57957e4f61fd92bb7f40e17))
r23905r23906
6291071   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
6301072   ROM_REGION(0x80000, "gfx3", 0)
6311073   ROM_LOAD("tftcdspa.301", 0x00000, 0x80000, CRC(3888d06f) SHA1(3d276df436a76c6e9bed6629114204dacd88245b))
632   ROM_REGION(0x010000, "audiocpu", 0)
1074   ROM_REGION(0x010000, "soundcpu", 0)
6331075   ROM_LOAD("sndu7.dat", 0x0000, 0x10000, CRC(7963740e) SHA1(fc1f150dcbab8af865a8ea624dfdcc03301f05e6))
6341076   ROM_REGION(0x1000000, "bsmt", 0)
6351077   ROM_LOAD("sndu17.dat", 0x000000, 0x80000, CRC(5c5d009a) SHA1(57d0307ea682eca5a57957e4f61fd92bb7f40e17))
r23905r23906
6411083   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
6421084   ROM_REGION(0x80000, "gfx3", 0)
6431085   ROM_LOAD("tftcdspa.300", 0x00000, 0x80000, CRC(bf5c812b) SHA1(c10390b6cad0ad457fb83241c7ee1d6b109cf5be))
644   ROM_REGION(0x010000, "audiocpu", 0)
1086   ROM_REGION(0x010000, "soundcpu", 0)
6451087   ROM_LOAD("sndu7.dat", 0x0000, 0x10000, CRC(7963740e) SHA1(fc1f150dcbab8af865a8ea624dfdcc03301f05e6))
6461088   ROM_REGION(0x1000000, "bsmt", 0)
6471089   ROM_LOAD("sndu17.dat", 0x000000, 0x80000, CRC(5c5d009a) SHA1(57d0307ea682eca5a57957e4f61fd92bb7f40e17))
r23905r23906
6541096   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
6551097   ROM_REGION(0x80000, "gfx3", 0)
6561098   ROM_LOAD("tftcdot.a20", 0x00000, 0x80000, CRC(16b3968a) SHA1(6ce91774fc60187e4b0d8874a14ef64e2805eb3f))
657   ROM_REGION(0x010000, "audiocpu", 0)
1099   ROM_REGION(0x010000, "soundcpu", 0)
6581100   ROM_LOAD("sndu7.dat", 0x0000, 0x10000, CRC(7963740e) SHA1(fc1f150dcbab8af865a8ea624dfdcc03301f05e6))
6591101   ROM_REGION(0x1000000, "bsmt", 0)
6601102   ROM_LOAD("sndu17.dat", 0x000000, 0x80000, CRC(5c5d009a) SHA1(57d0307ea682eca5a57957e4f61fd92bb7f40e17))
r23905r23906
6671109   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
6681110   ROM_REGION(0x80000, "gfx3", 0)
6691111   ROM_LOAD("tftcdspl.103", 0x00000, 0x80000, CRC(98f3b13e) SHA1(909c373b1a27b5aeebad2535ae4fb9bba71e9b5c))
670   ROM_REGION(0x010000, "audiocpu", 0)
1112   ROM_REGION(0x010000, "soundcpu", 0)
6711113   ROM_LOAD("sndu7.dat", 0x0000, 0x10000, CRC(7963740e) SHA1(fc1f150dcbab8af865a8ea624dfdcc03301f05e6))
6721114   ROM_REGION(0x1000000, "bsmt", 0)
6731115   ROM_LOAD("sndu17.dat", 0x000000, 0x80000, CRC(5c5d009a) SHA1(57d0307ea682eca5a57957e4f61fd92bb7f40e17))
r23905r23906
6861128   ROM_REGION(0x20000, "gfx3", 0)
6871129   ROM_LOAD("tmntdsp.104", 0x00000, 0x10000, CRC(545686b7) SHA1(713df7820d024db3406f5e171f62a53e34474f70))
6881130   ROM_RELOAD(0x10000, 0x10000)
689   ROM_REGION(0x10000, "audiocpu", 0)
1131   ROM_REGION(0x10000, "soundcpu", 0)
6901132   ROM_LOAD("tmntf7.rom", 0x8000, 0x8000, CRC(59ba0153) SHA1(e7b02a656c67a0d866020a60ee90e30bef77f67f))
6911133   ROM_REGION(0x1000000, "bsmt", 0)
6921134   ROM_LOAD("tmntf6.rom", 0x00000, 0x20000, CRC(5668d45a) SHA1(65766cb47791ec0a2243015d487f1156a2819fe6))
r23905r23906
7021144   ROM_REGION(0x20000, "gfx3", 0)
7031145   ROM_LOAD("tmntdsp.104", 0x00000, 0x10000, CRC(545686b7) SHA1(713df7820d024db3406f5e171f62a53e34474f70))
7041146   ROM_RELOAD(0x10000, 0x10000)
705   ROM_REGION(0x10000, "audiocpu", 0)
1147   ROM_REGION(0x10000, "soundcpu", 0)
7061148   ROM_LOAD("tmntf7.rom", 0x8000, 0x8000, CRC(59ba0153) SHA1(e7b02a656c67a0d866020a60ee90e30bef77f67f))
7071149   ROM_REGION(0x1000000, "bsmt", 0)
7081150   ROM_LOAD("tmntf6.rom", 0x00000, 0x20000, CRC(5668d45a) SHA1(65766cb47791ec0a2243015d487f1156a2819fe6))
r23905r23906
7181160   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
7191161   ROM_REGION(0x80000, "gfx3", 0)
7201162   ROM_LOAD("tommydva.400", 0x00000, 0x80000, CRC(9e640d09) SHA1(d921fadeb728cf929c6bae2e79bd4d140192a4d2))
721   ROM_REGION(0x010000, "audiocpu", 0)
1163   ROM_REGION(0x010000, "soundcpu", 0)
7221164   ROM_LOAD("tommysnd.u7", 0x0000, 0x10000, CRC(ab0b4626) SHA1(31237b4f5e866710506f1336e3ca2dbd6a89385a))
7231165   ROM_REGION(0x1000000, "bsmt", 0)
7241166   ROM_LOAD("tommysnd.u17", 0x000000, 0x80000, CRC(11bb2aa7) SHA1(57b4867c109996861f45ead1ceedb7153aff852e))
r23905r23906
7331175   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
7341176   ROM_REGION(0x80000, "gfx3", 0)
7351177   ROM_LOAD("tommydva.300", 0x00000, 0x80000, CRC(1f2d0896) SHA1(50c617e30bb843c69a6ca8afeeb751c886f5e6bd))
736   ROM_REGION(0x010000, "audiocpu", 0)
1178   ROM_REGION(0x010000, "soundcpu", 0)
7371179   ROM_LOAD("tommysnd.u7", 0x0000, 0x10000, CRC(ab0b4626) SHA1(31237b4f5e866710506f1336e3ca2dbd6a89385a))
7381180   ROM_REGION(0x1000000, "bsmt", 0)
7391181   ROM_LOAD("tommysnd.u17", 0x000000, 0x80000, CRC(11bb2aa7) SHA1(57b4867c109996861f45ead1ceedb7153aff852e))
r23905r23906
7511193   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
7521194   ROM_REGION(0x80000, "gfx3", 0)
7531195   ROM_LOAD("wwfdispa.102", 0x00000, 0x80000, CRC(4b629a4f) SHA1(c301d0c785f7bc4d3c23cbda76ff955c742eaeef))
754   ROM_REGION(0x010000, "audiocpu", 0)
1196   ROM_REGION(0x010000, "soundcpu", 0)
7551197   ROM_LOAD("wfsndu7.512", 0x0000, 0x10000, CRC(eb01745c) SHA1(7222e39c52ed298b737aadaa5b57d2068d39287e))
7561198   ROM_REGION(0x1000000, "bsmt", 0)
7571199   ROM_LOAD("wfsndu17.400", 0x000000, 0x80000, CRC(7d9c2ca8) SHA1(5d84559455fe7e27634b28bcab81d54f2676390e))
r23905r23906
7641206   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
7651207   ROM_REGION(0x80000, "gfx3", 0)
7661208   ROM_LOAD("wfdisp0.400", 0x00000, 0x80000, CRC(e190b90f) SHA1(a0e73ce0b241a81e935e6790e04ea5e1fccf3742))
767   ROM_REGION(0x010000, "audiocpu", 0)
1209   ROM_REGION(0x010000, "soundcpu", 0)
7681210   ROM_LOAD("wfsndu7.512", 0x0000, 0x10000, CRC(eb01745c) SHA1(7222e39c52ed298b737aadaa5b57d2068d39287e))
7691211   ROM_REGION(0x1000000, "bsmt", 0)
7701212   ROM_LOAD("wfsndu17.400", 0x000000, 0x80000, CRC(7d9c2ca8) SHA1(5d84559455fe7e27634b28bcab81d54f2676390e))
r23905r23906
7731215ROM_END
7741216
7751217
776GAME(1983,  rab_320,        0,          de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Adventures of Rocky and Bullwinkle and Friends (3.20)",        GAME_IS_SKELETON_MECHANICAL)
777GAME(1993,  rab_130,        rab_320,    de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Adventures of Rocky and Bullwinkle and Friends (1.30)",        GAME_IS_SKELETON_MECHANICAL)
778GAME(1993,  rab_103,        rab_320,    de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Adventures of Rocky and Bullwinkle and Friends (1.03 Spain)",  GAME_IS_SKELETON_MECHANICAL)
779GAME(1992,  aar_101,        0,          de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Aaron Spelling (1.01)",                                        GAME_IS_SKELETON_MECHANICAL)
1218GAME(1983,  rab_320,        0,          de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Adventures of Rocky and Bullwinkle and Friends (3.20)",        GAME_IS_SKELETON_MECHANICAL)
1219GAME(1993,  rab_130,        rab_320,    de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Adventures of Rocky and Bullwinkle and Friends (1.30)",        GAME_IS_SKELETON_MECHANICAL)
1220GAME(1993,  rab_103,        rab_320,    de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Adventures of Rocky and Bullwinkle and Friends (1.03 Spain)",  GAME_IS_SKELETON_MECHANICAL)
1221GAME(1992,  aar_101,        0,          de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Aaron Spelling (1.01)",                                        GAME_IS_SKELETON_MECHANICAL)
7801222GAME(1991,  btmn_103,       0,          de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Batman (1.03)",                                                GAME_IS_SKELETON_MECHANICAL)
7811223GAME(1991,  btmn_101,       btmn_103,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Batman (1.01)",                                                GAME_IS_SKELETON_MECHANICAL)
7821224GAME(1991,  btmn_g13,       btmn_103,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Batman (1.03 Germany)",                                        GAME_IS_SKELETON_MECHANICAL)
7831225GAME(1991,  btmn_106,       btmn_103,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Batman (1.06)",                                                GAME_IS_SKELETON_MECHANICAL)
7841226GAME(1991,  ckpt_a17,       0,          de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Checkpoint (1.7)",                                             GAME_IS_SKELETON_MECHANICAL)
785GAME(1994,  gnr_300,        0,          de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Guns N Roses (3.00)",                                          GAME_IS_SKELETON_MECHANICAL)
1227GAME(1994,  gnr_300,        0,          de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Guns N Roses (3.00)",                                          GAME_IS_SKELETON_MECHANICAL)
7861228GAME(1992,  hook_408,       0,          de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Hook (4.08)",                                                  GAME_IS_SKELETON_MECHANICAL)
7871229GAME(1992,  hook_401,       hook_408,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Hook (4.01)",                                                  GAME_IS_SKELETON_MECHANICAL)
7881230GAME(1992,  hook_404,       hook_408,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Hook (4.04)",                      GAME_IS_SKELETON_MECHANICAL)
789GAME(1993,  jupk_513,       0,          de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Jurassic Park (5.13)",             GAME_IS_SKELETON_MECHANICAL)
790GAME(1993,  jupk_501,       jupk_513,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Jurassic Park (5.01)",             GAME_IS_SKELETON_MECHANICAL)
791GAME(1993,  jupk_g51,       jupk_513,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Jurassic Park (5.01 Germany)",     GAME_IS_SKELETON_MECHANICAL)
792GAME(1993,  lah_112,        0,          de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Last Action Hero (1.12)",          GAME_IS_SKELETON_MECHANICAL)
793GAME(1993,  lah_l104,       lah_112,    de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Last Action Hero (1.04 Spain)",    GAME_IS_SKELETON_MECHANICAL)
794GAME(1993,  lah_l108,       lah_112,    de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Last Action Hero (1.08 Spain)",    GAME_IS_SKELETON_MECHANICAL)
795GAME(1993,  lah_110,        lah_112,    de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Last Action Hero (1.10)",          GAME_IS_SKELETON_MECHANICAL)
796GAME(1992,  lw3_208,        0,          de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Lethal Weapon 3 (2.08)",           GAME_IS_SKELETON_MECHANICAL)
797GAME(1992,  lw3_207,        lw3_208,    de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Lethal Weapon 3 (2.07 Canada)",    GAME_IS_SKELETON_MECHANICAL)
798GAME(1992,  lw3_205,        lw3_208,    de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Lethal Weapon 3 (2.05)",           GAME_IS_SKELETON_MECHANICAL)
799GAME(1992,  lw3_200,        lw3_208,    de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Lethal Weapon 3 (2.00)",           GAME_IS_SKELETON_MECHANICAL)
1231GAME(1993,  jupk_513,       0,          de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Jurassic Park (5.13)",             GAME_IS_SKELETON_MECHANICAL)
1232GAME(1993,  jupk_501,       jupk_513,   de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Jurassic Park (5.01)",             GAME_IS_SKELETON_MECHANICAL)
1233GAME(1993,  jupk_g51,       jupk_513,   de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Jurassic Park (5.01 Germany)",     GAME_IS_SKELETON_MECHANICAL)
1234GAME(1993,  lah_112,        0,          de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Last Action Hero (1.12)",          GAME_IS_SKELETON_MECHANICAL)
1235GAME(1993,  lah_l104,       lah_112,    de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Last Action Hero (1.04 Spain)",    GAME_IS_SKELETON_MECHANICAL)
1236GAME(1993,  lah_l108,       lah_112,    de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Last Action Hero (1.08 Spain)",    GAME_IS_SKELETON_MECHANICAL)
1237GAME(1993,  lah_110,        lah_112,    de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Last Action Hero (1.10)",          GAME_IS_SKELETON_MECHANICAL)
1238GAME(1992,  lw3_208,        0,          de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Lethal Weapon 3 (2.08)",           GAME_IS_SKELETON_MECHANICAL)
1239GAME(1992,  lw3_207,        lw3_208,    de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Lethal Weapon 3 (2.07 Canada)",    GAME_IS_SKELETON_MECHANICAL)
1240GAME(1992,  lw3_205,        lw3_208,    de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Lethal Weapon 3 (2.05)",           GAME_IS_SKELETON_MECHANICAL)
1241GAME(1992,  lw3_200,        lw3_208,    de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Lethal Weapon 3 (2.00)",           GAME_IS_SKELETON_MECHANICAL)
8001242GAME(1992,  trek_201,       0,          de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Star Trek 25th Anniversary (2.01)",                GAME_IS_SKELETON_MECHANICAL)
8011243GAME(1992,  trek_200,       trek_201,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Star Trek 25th Anniversary (2.00)",                GAME_IS_SKELETON_MECHANICAL)
8021244GAME(1992,  trek_120,       trek_201,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Star Trek 25th Anniversary (1.20)",                GAME_IS_SKELETON_MECHANICAL)
8031245GAME(1992,  trek_110,       trek_201,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Star Trek 25th Anniversary (1.10)",                GAME_IS_SKELETON_MECHANICAL)
8041246GAME(1992,  trek_11a,       trek_201,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Star Trek 25th Anniversary (1.10 Alpha Display)",  GAME_IS_SKELETON_MECHANICAL)
805GAME(1992,  stwr_103,       0,          de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Star Wars (1.03)",             GAME_IS_SKELETON_MECHANICAL)
806GAME(1992,  stwr_g11,       stwr_103,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Star Wars (1.01 Germany)",     GAME_IS_SKELETON_MECHANICAL)
807GAME(1992,  stwr_a14,       stwr_103,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Star Wars (Display Rev.1.04)", GAME_IS_SKELETON_MECHANICAL)
808GAME(1992,  stwr_102,       stwr_103,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Star Wars (1.02)",             GAME_IS_SKELETON_MECHANICAL)
809GAME(1992,  stwr_e12,       stwr_103,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Star Wars (1.02 England)",     GAME_IS_SKELETON_MECHANICAL)
810GAME(1993,  tftc_303,       0,          de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Tales From the Crypt (3.03)",              GAME_IS_SKELETON_MECHANICAL)
811GAME(1993,  tftc_302,       tftc_303,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Tales From the Crypt (3.02 Dutch)",                GAME_IS_SKELETON_MECHANICAL)
812GAME(1993,  tftc_300,       tftc_303,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Tales From the Crypt (3.00)",              GAME_IS_SKELETON_MECHANICAL)
813GAME(1993,  tftc_200,       tftc_303,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Tales From the Crypt (2.00)",              GAME_IS_SKELETON_MECHANICAL)
814GAME(1993,  tftc_104,       tftc_303,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Tales From the Crypt (1.04 Spain)",        GAME_IS_SKELETON_MECHANICAL)
1247GAME(1992,  stwr_103,       0,          de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Star Wars (1.03)",             GAME_IS_SKELETON_MECHANICAL)
1248GAME(1992,  stwr_g11,       stwr_103,   de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Star Wars (1.01 Germany)",     GAME_IS_SKELETON_MECHANICAL)
1249GAME(1992,  stwr_a14,       stwr_103,   de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Star Wars (Display Rev.1.04)", GAME_IS_SKELETON_MECHANICAL)
1250GAME(1992,  stwr_102,       stwr_103,   de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Star Wars (1.02)",             GAME_IS_SKELETON_MECHANICAL)
1251GAME(1992,  stwr_e12,       stwr_103,   de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Star Wars (1.02 England)",     GAME_IS_SKELETON_MECHANICAL)
1252GAME(1993,  tftc_303,       0,          de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Tales From the Crypt (3.03)",              GAME_IS_SKELETON_MECHANICAL)
1253GAME(1993,  tftc_302,       tftc_303,   de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Tales From the Crypt (3.02 Dutch)",                GAME_IS_SKELETON_MECHANICAL)
1254GAME(1993,  tftc_300,       tftc_303,   de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Tales From the Crypt (3.00)",              GAME_IS_SKELETON_MECHANICAL)
1255GAME(1993,  tftc_200,       tftc_303,   de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Tales From the Crypt (2.00)",              GAME_IS_SKELETON_MECHANICAL)
1256GAME(1993,  tftc_104,       tftc_303,   de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Tales From the Crypt (1.04 Spain)",        GAME_IS_SKELETON_MECHANICAL)
8151257GAME(1991,  tmnt_104,       0,          de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Teenage Mutant Ninja Turtles (1.04)",      GAME_IS_SKELETON_MECHANICAL)
8161258GAME(1991,  tmnt_103,       tmnt_104,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "Teenage Mutant Ninja Turtles (1.03)",      GAME_IS_SKELETON_MECHANICAL)
817GAME(1994,  tomy_400,       0,          de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "The Who's Tommy Pinball Wizard (4.00)",                GAME_IS_SKELETON_MECHANICAL)
818GAME(1994,  tomy_h30,       tomy_400,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "The Who's Tommy Pinball Wizard (3.00 Holland)",        GAME_IS_SKELETON_MECHANICAL)
819GAME(1994,  wwfr_106,       0,          de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "WWF Royal Rumble (1.06)",              GAME_IS_SKELETON_MECHANICAL)
820GAME(1994,  wwfr_103,       wwfr_106,   de_3,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "WWF Royal Rumble (1.03)",              GAME_IS_SKELETON_MECHANICAL)
1259GAME(1994,  tomy_400,       0,          de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "The Who's Tommy Pinball Wizard (4.00)",                GAME_IS_SKELETON_MECHANICAL)
1260GAME(1994,  tomy_h30,       tomy_400,   de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "The Who's Tommy Pinball Wizard (3.00 Holland)",        GAME_IS_SKELETON_MECHANICAL)
1261GAME(1994,  wwfr_106,       0,          de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "WWF Royal Rumble (1.06)",              GAME_IS_SKELETON_MECHANICAL)
1262GAME(1994,  wwfr_103,       wwfr_106,   de_3_dmd2,   de_3, de_3_state,   de_3,   ROT0,   "Data East",    "WWF Royal Rumble (1.03)",              GAME_IS_SKELETON_MECHANICAL)
trunk/src/mame/mame.mak
r23905r23906
18921892   $(DRIVERS)/capcom.o  \
18931893   $(DRIVERS)/de_2.o  \
18941894   $(DRIVERS)/de_3.o  \
1895   $(VIDEO)/decodmd2.o \
18951896   $(DRIVERS)/de_3b.o  \
18961897   $(DRIVERS)/flicker.o  \
18971898   $(DRIVERS)/g627.o  \
trunk/src/mame/video/decodmd2.c
r0r23906
1/*
2 *   Data East Pinball Dot Matrix Display
3 *
4 *    Type 2: 128x32
5 *    68B09E @ 8MHz
6 *    68B45 CRTC
7 */
8
9#include "decodmd2.h"
10#include "rendlay.h"
11
12const device_type DECODMD2 = &device_creator<decodmd_type2_device>;
13
14WRITE8_MEMBER( decodmd_type2_device::bank_w )
15{
16   m_rombank1->set_entry(data & 0x1f);
17}
18
19WRITE8_MEMBER( decodmd_type2_device::crtc_address_w )
20{
21   m_mc6845->address_w(space,offset,data);
22   m_crtc_index = data;
23}
24
25READ8_MEMBER( decodmd_type2_device::crtc_status_r )
26{
27   return m_mc6845->register_r(space,offset);
28}
29
30WRITE8_MEMBER( decodmd_type2_device::crtc_register_w )
31{
32   m_mc6845->register_w(space,offset,data);
33   m_crtc_reg[m_crtc_index] = data;
34}
35
36READ8_MEMBER( decodmd_type2_device::latch_r )
37{
38   // clear IRQ?
39   m_cpu->set_input_line(M6809_IRQ_LINE,CLEAR_LINE);
40   m_busy = false;
41   return m_command;
42}
43
44WRITE8_MEMBER( decodmd_type2_device::data_w )
45{
46   // set IRQ?
47   m_latch = data;
48}
49
50READ8_MEMBER( decodmd_type2_device::busy_r )
51{
52   UINT8 ret = 0x00;
53
54   ret = (m_status & 0x03) << 3;
55
56   if(m_busy)
57      return 0x80 | ret;
58   else
59      return 0x00 | ret;
60}
61
62
63WRITE8_MEMBER( decodmd_type2_device::ctrl_w )
64{
65   if(!(m_ctrl & 0x01) && (data & 0x01))
66   {
67      m_cpu->set_input_line(M6809_IRQ_LINE,ASSERT_LINE);
68      m_busy = true;
69      m_command = m_latch;
70   }
71   if((m_ctrl & 0x02) && !(data & 0x02))
72   {
73      m_cpu->set_input_line(INPUT_LINE_RESET,PULSE_LINE);
74      m_rombank1->set_entry(0);
75      logerror("DMD2: Reset\n");
76   }
77   m_ctrl = data;
78}
79
80READ8_MEMBER( decodmd_type2_device::status_r )
81{
82   return m_status;
83}
84
85WRITE8_MEMBER( decodmd_type2_device::status_w )
86{
87   m_status = data & 0x0f;
88}
89
90TIMER_DEVICE_CALLBACK_MEMBER(decodmd_type2_device::dmd_firq)
91{
92   m_cpu->set_input_line(M6809_FIRQ_LINE, HOLD_LINE);
93}
94
95MC6845_INTERFACE( decodmd2_6845_intf )
96{
97   NULL,                                   /* screen name */
98   false,                                  /* show border area */
99   16,                                     /* number of pixels per video memory address */
100   NULL,                                   /* begin_update */
101   NULL,                                   /* update_row */
102   NULL,                                   /* end_update */
103   DEVCB_NULL,      /* on_de_changed */
104   DEVCB_NULL,      /* on_cur_changed */
105   DEVCB_NULL,      /* on_hsync_changed */
106   DEVCB_NULL,      /* on_vsync_changed */
107   NULL
108};
109
110static ADDRESS_MAP_START( decodmd2_map, AS_PROGRAM, 8, decodmd_type2_device )
111   AM_RANGE(0x0000, 0x2fff) AM_RAMBANK("dmdram")
112   AM_RANGE(0x3000, 0x3000) AM_READWRITE(crtc_status_r,crtc_address_w)
113   AM_RANGE(0x3001, 0x3001) AM_WRITE(crtc_register_w)
114   AM_RANGE(0x3002, 0x3002) AM_WRITE(bank_w)
115   AM_RANGE(0x3003, 0x3003) AM_READ(latch_r)
116   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("dmdbank1") AM_WRITE(status_w)
117   AM_RANGE(0x8000, 0xffff) AM_ROMBANK("dmdbank2") // last 32k of ROM
118ADDRESS_MAP_END
119
120static MACHINE_CONFIG_FRAGMENT( decodmd2 )
121   /* basic machine hardware */
122   MCFG_CPU_ADD("dmdcpu", M6809E, XTAL_8MHz)
123   MCFG_CPU_PROGRAM_MAP(decodmd2_map)
124
125   MCFG_QUANTUM_TIME(attotime::from_hz(60))
126
127   MCFG_TIMER_DRIVER_ADD_PERIODIC("firq_timer",decodmd_type2_device,dmd_firq,attotime::from_hz(60))
128
129   MCFG_MC6845_ADD("dmd6845",MC6845,XTAL_8MHz / 8,decodmd2_6845_intf)  // TODO: confirm clock speed
130
131   MCFG_DEFAULT_LAYOUT(layout_lcd)
132
133   MCFG_SCREEN_ADD("dmd",RASTER)
134   MCFG_SCREEN_SIZE(128, 32)
135   MCFG_SCREEN_VISIBLE_AREA(0, 128-1, 0, 32-1)
136   MCFG_SCREEN_UPDATE_DRIVER(decodmd_type2_device, screen_update)
137   MCFG_SCREEN_REFRESH_RATE(60)
138
139   MCFG_RAM_ADD(RAM_TAG)
140   MCFG_RAM_DEFAULT_SIZE("12K")
141
142MACHINE_CONFIG_END
143
144machine_config_constructor decodmd_type2_device::device_mconfig_additions() const
145{
146   return MACHINE_CONFIG_NAME( decodmd2 );
147}
148
149decodmd_type2_device::decodmd_type2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
150   : device_t(mconfig, DECODMD2, "Data East Pinball Dot Matrix Display Type 2", tag, owner, clock, "decodmd2", __FILE__),
151     m_cpu(*this,"dmdcpu"),
152     m_mc6845(*this,"dmd6845"),
153     m_rombank1(*this,"dmdbank1"),
154     m_rombank2(*this,"dmdbank2"),
155     m_rambank(*this,"dmdram"),
156     m_ram(*this,RAM_TAG)
157{}
158
159void decodmd_type2_device::device_start()
160{
161}
162
163void decodmd_type2_device::device_reset()
164{
165   UINT8* ROM;
166   UINT8* RAM = m_ram->pointer();
167   m_rom = memregion(m_romregion);
168
169   memset(RAM,0,0x3000);
170
171   ROM = m_rom->base();
172   m_rombank1->configure_entries(0, 32, &ROM[0x0000], 0x4000);
173   m_rombank2->configure_entry(0, &ROM[0x78000]);
174   m_rambank->configure_entry(0, &RAM[0]);
175   m_rombank1->set_entry(0);
176   m_rombank2->set_entry(0);
177   m_rambank->set_entry(0);
178   m_busy = false;
179}
180
181void decodmd_type2_device::device_config_complete()
182{
183   // inherit a copy of the static data
184   const decodmd_intf *intf = reinterpret_cast<const decodmd_intf *>(static_config());
185   if (intf != NULL)
186      *static_cast<decodmd_intf *>(this) = *intf;
187
188   // or initialize to defaults if none provided
189   else
190   {
191      m_romregion = NULL;
192   }
193}
194
195UINT32 decodmd_type2_device::screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect )
196{
197   UINT16 addr = (START_ADDRESS & 0xfc00) | ((START_ADDRESS & 0x1ff) << 2);
198   UINT8* RAM = m_ram->pointer();
199   UINT8 x,y,dot,intensity;
200
201   for(y=0;y<bitmap.height();y++)
202   {
203      for(x=0;x<bitmap.width();x+=8)
204      {
205         for(dot=0;dot<8;dot++)
206         {
207            intensity = (RAM[addr] >> (7-dot) & 0x01) | ((RAM[addr+0x200] >> (7-dot) & 0x01) << 1);
208            bitmap.pix32(y,x+dot) = MAKE_RGB(0x3f*intensity,0x2a*intensity,0x00);
209         }
210         addr++;
211      }
212   }
213
214   return 0;
215}
Property changes on: trunk/src/mame/video/decodmd2.c
Added: svn:eol-style
   + native
Added: svn:mime-type
   + text/plain
trunk/src/mame/video/decodmd2.h
r0r23906
1/*
2 *  Data East Pinball DMD Type 2 Display
3 */
4
5#ifndef DECODMD_H_
6#define DECODMD_H_
7
8#include "emu.h"
9#include "cpu/m6809/m6809.h"
10#include "video/mc6845.h"
11#include "machine/ram.h"
12
13#define MCFG_DECODMD_TYPE2_ADD(_tag, _intrf) \
14   MCFG_DEVICE_ADD(_tag, DECODMD2, 0) \
15   MCFG_DEVICE_CONFIG(_intrf)
16
17#define START_ADDRESS       (((m_crtc_reg[0x0c]<<8) & 0x3f00) | (m_crtc_reg[0x0d] & 0xff))
18
19struct decodmd_intf
20{
21   const char* m_romregion;  // region containing display ROM
22};
23
24class decodmd_type2_device : public device_t,
25                      public decodmd_intf
26{
27public:
28   decodmd_type2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
29   required_device<cpu_device> m_cpu;
30   required_device<mc6845_device> m_mc6845;
31   required_memory_bank m_rombank1;
32   required_memory_bank m_rombank2;
33   required_memory_bank m_rambank;
34   required_device<ram_device> m_ram;
35   memory_region* m_rom;
36
37   UINT32 screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect );
38
39   DECLARE_WRITE8_MEMBER(bank_w);
40   DECLARE_WRITE8_MEMBER(crtc_address_w);
41   DECLARE_WRITE8_MEMBER(crtc_register_w);
42   DECLARE_READ8_MEMBER(crtc_status_r);
43   DECLARE_READ8_MEMBER(latch_r);
44   DECLARE_WRITE8_MEMBER(data_w);
45   DECLARE_READ8_MEMBER(busy_r);
46   DECLARE_WRITE8_MEMBER(ctrl_w);
47   DECLARE_READ8_MEMBER(status_r);
48   DECLARE_WRITE8_MEMBER(status_w);
49   TIMER_DEVICE_CALLBACK_MEMBER(dmd_firq);
50
51protected:
52   virtual machine_config_constructor device_mconfig_additions() const;
53   virtual void device_start();
54   virtual void device_reset();
55   virtual void device_config_complete();
56
57private:
58   UINT8 m_crtc_index;
59   UINT8 m_crtc_reg[0x100];
60   UINT8 m_latch;
61   UINT8 m_status;
62   UINT8 m_ctrl;
63   UINT8 m_busy;
64   UINT8 m_command;
65};
66
67extern const device_type DECODMD2;
68
69#endif /* DECODMD_H_ */
Property changes on: trunk/src/mame/video/decodmd2.h
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native

Previous 199869 Revisions Next


© 1997-2024 The MAME Team