Previous 199869 Revisions Next

r31250 Thursday 10th July, 2014 at 05:51:23 UTC by Robbbert
babypac WIP : boots up but that's all
[src/mame/drivers]byvid.c

trunk/src/mame/drivers/byvid.c
r31249r31250
1/*
1/**************************************************************
2
3    PINBALL
24    Bally MPU AS-2518-133
3*/
5    Baby Pacman
6    Granny & the Gators
7    A blend of arcade video game, and pinball.
48
9ToDo:
10- No sound
11- No inputs
12- Mechanical
13- Artwork
14- Beeper needs to be replaced by a red LED when artwork gets done.
515
16***************************************************************/
17
18
619#include "emu.h"
720#include "cpu/m6800/m6800.h"
821#include "cpu/m6809/m6809.h"
922#include "video/tms9928a.h"
1023#include "machine/6821pia.h"
1124#include "sound/dac.h"
25#include "sound/beep.h"
1226
1327class by133_state : public driver_device
1428{
1529public:
1630   by133_state(const machine_config &mconfig, device_type type, const char *tag)
17      : driver_device(mconfig, type, tag),
18         m_maincpu(*this, "maincpu"),
19         m_videocpu(*this, "videocpu"),
20         m_audiocpu(*this, "audiocpu"),
21         m_videopia(*this, "videopia")
31      : driver_device(mconfig, type, tag)
32      , m_maincpu(*this, "maincpu")
33      , m_videocpu(*this, "videocpu")
34      , m_audiocpu(*this, "audiocpu")
35      , m_pia_u7(*this, "pia_u7")
36      , m_pia_u10(*this, "pia_u10")
37      , m_pia_u11(*this, "pia_u11")
38      , m_beep(*this, "beeper")
2239   { }
2340
24   // devices
25   required_device<cpu_device> m_maincpu;
26   required_device<cpu_device> m_videocpu;
27   required_device<cpu_device> m_audiocpu;
28   required_device<pia6821_device> m_videopia;
29
41   DECLARE_READ8_MEMBER(sound_data_r);
42   DECLARE_WRITE8_MEMBER(sound_data_w);
3043   DECLARE_READ8_MEMBER(m6803_port2_r);
3144   DECLARE_WRITE8_MEMBER(m6803_port2_w);
32
3345   DECLARE_INPUT_CHANGED_MEMBER(video_test);
3446   DECLARE_INPUT_CHANGED_MEMBER(sound_test);
35
36   UINT8 m_sound_port2;
37   DECLARE_WRITE_LINE_MEMBER(vdp_interrupt);
38   DECLARE_WRITE_LINE_MEMBER(by133_firq);
39   DECLARE_WRITE_LINE_MEMBER(by133_cb2);
40   DECLARE_READ8_MEMBER(by133_portb_r);
41   DECLARE_WRITE8_MEMBER(by133_portb_w);
47   DECLARE_INPUT_CHANGED_MEMBER(activity_test);
48   DECLARE_INPUT_CHANGED_MEMBER(self_test);
49   DECLARE_READ8_MEMBER(u7_a_r);
50   DECLARE_WRITE8_MEMBER(u7_a_w);
51   DECLARE_READ8_MEMBER(u7_b_r);
52   DECLARE_WRITE8_MEMBER(u7_b_w);
53   DECLARE_READ8_MEMBER(u10_a_r);
54   DECLARE_WRITE8_MEMBER(u10_a_w);
55   DECLARE_READ8_MEMBER(u10_b_r);
56   DECLARE_WRITE8_MEMBER(u10_b_w);
57   DECLARE_READ8_MEMBER(u11_a_r);
58   DECLARE_WRITE8_MEMBER(u11_a_w);
59   DECLARE_READ8_MEMBER(u11_b_r);
60   DECLARE_WRITE8_MEMBER(u11_b_w);
61   DECLARE_WRITE_LINE_MEMBER(u7_ca2_w);
62   DECLARE_WRITE_LINE_MEMBER(u10_ca2_w);
63   DECLARE_WRITE_LINE_MEMBER(u11_ca2_w);
64   DECLARE_WRITE_LINE_MEMBER(u7_cb2_w);
65   DECLARE_WRITE_LINE_MEMBER(u10_cb2_w);
66   DECLARE_WRITE_LINE_MEMBER(u11_cb2_w);
67   TIMER_DEVICE_CALLBACK_MEMBER(u10_timer);
68   TIMER_DEVICE_CALLBACK_MEMBER(u11_timer);
69private:
70   UINT8 m_mpu_to_vid;
71   UINT8 m_vid_to_mpu;
72   UINT8 m_u7_a;
73   UINT8 m_u7_b;
74   UINT8 m_u10_a;
75   UINT8 m_u10_b;
76   bool m_u10_cb2;
77   UINT8 m_u11_a;
78   UINT8 m_u11_b;
79   bool m_u10_timer;
80   bool m_u11_timer;
4281   virtual void machine_reset();
82   required_device<m6800_cpu_device> m_maincpu;
83   required_device<m6809e_device> m_videocpu;
84   required_device<m6803_cpu_device> m_audiocpu;
85   required_device<pia6821_device> m_pia_u7;
86   required_device<pia6821_device> m_pia_u10;
87   required_device<pia6821_device> m_pia_u11;
88   optional_device<beep_device> m_beep;
4389};
4490
4591
46static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, by133_state )
47   AM_RANGE(0x0000, 0xffff) AM_NOP
92static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, by133_state ) // U9 MPU
4893   ADDRESS_MAP_GLOBAL_MASK(0x7fff)
49   AM_RANGE(0x1000, 0x7fff) AM_ROM
94   AM_RANGE(0x0000, 0x007f) AM_RAM // 128x8 in MC6810 U7 MPU
95   AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("pia_u10", pia6821_device, read, write) // PIA U10 MPU
96   AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("pia_u11", pia6821_device, read, write) // PIA U11 MPU
97   AM_RANGE(0x0200, 0x03ff) AM_RAM // 256x4 in 5101L U8 MPU, battery backed (D4-7 are data, A4-8 are address)
98   AM_RANGE(0x1000, 0x17ff) AM_ROM AM_REGION("roms", 0x0000)
99   AM_RANGE(0x1800, 0x1fff) AM_ROM AM_REGION("roms", 0x1000)
100   AM_RANGE(0x5000, 0x57ff) AM_ROM AM_REGION("roms", 0x0800)
101   AM_RANGE(0x5800, 0x5fff) AM_ROM AM_REGION("roms", 0x1800)
102   AM_RANGE(0x7000, 0x7fff) AM_ROM AM_REGION("roms", 0x1000)
50103ADDRESS_MAP_END
51104
52
53
54static ADDRESS_MAP_START( video_map, AS_PROGRAM, 8, by133_state )
55//  AM_RANGE(0x0000, 0x1fff) communication with main CPU
56   AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("videopia", pia6821_device, read, write)
57   AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write)
58   AM_RANGE(0x4001, 0x4001) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write)
59   AM_RANGE(0x6000, 0x63ff) AM_RAM
105static ADDRESS_MAP_START( video_map, AS_PROGRAM, 8, by133_state ) // U8 Vidiot
106   AM_RANGE(0x0000, 0x1fff) AM_READWRITE(sound_data_r,sound_data_w)
107   AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("pia_u7", pia6821_device, read, write) // PIA U7 Vidiot
108   AM_RANGE(0x4000, 0x4000) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write)
109   AM_RANGE(0x4001, 0x4001) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write)
110   AM_RANGE(0x6000, 0x63ff) AM_MIRROR(0x1c00) AM_RAM
60111   AM_RANGE(0x8000, 0xffff) AM_ROM
61112ADDRESS_MAP_END
62113
63
64
65READ8_MEMBER(by133_state::m6803_port2_r)
66{
67   machine().scheduler().synchronize();
68   return m_sound_port2;
69}
70
71WRITE8_MEMBER(by133_state::m6803_port2_w)
72{
73}
74
75static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, by133_state )
114static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, by133_state ) // U27 Vidiot
76115   AM_RANGE(0xc000, 0xffff) AM_ROM
77116ADDRESS_MAP_END
78117
79118static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, by133_state )
80   AM_RANGE(M6801_PORT1, M6801_PORT1) AM_DEVWRITE("dac", dac_device, write_unsigned8)
81   AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(m6803_port2_r, m6803_port2_w)
119   AM_RANGE(M6801_PORT1, M6801_PORT1) AM_DEVWRITE("dac", dac_device, write_unsigned8) // P10-P17
120   AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(m6803_port2_r, m6803_port2_w) // P20-P24
82121ADDRESS_MAP_END
83122
84123
85INPUT_CHANGED_MEMBER(by133_state::video_test)
124INPUT_CHANGED_MEMBER( by133_state::video_test )
86125{
87126   if(newval)
88127      m_videocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
89128}
90129
91INPUT_CHANGED_MEMBER(by133_state::sound_test)
130INPUT_CHANGED_MEMBER( by133_state::sound_test )
92131{
93132   if(newval)
94133      m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
95134}
96135
136// doesn't appear to do anything
137INPUT_CHANGED_MEMBER( by133_state::activity_test )
138{
139   if(newval)
140      m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
141}
142
143INPUT_CHANGED_MEMBER( by133_state::self_test )
144{
145   m_pia_u10->ca1_w(newval);
146}
147
97148static INPUT_PORTS_START( by133 )
98   /* test switch is directly hard-wired to the NMI signal */
99149   PORT_START("TEST")
100150   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Video Test") PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, by133_state, video_test, 0)
101151   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Sound Test") PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, by133_state, sound_test, 0)
152   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Activity") PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, by133_state, activity_test, 0)
153   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE4 ) PORT_NAME("Self Test") PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, by133_state, self_test, 0)
154
155   PORT_START("DSW0")
156   PORT_DIPNAME( 0x01, 0x00, "S01")
157   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
158   PORT_DIPSETTING(    0x01, DEF_STR( On ))
159   PORT_DIPNAME( 0x02, 0x00, "S02")
160   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
161   PORT_DIPSETTING(    0x02, DEF_STR( On ))
162   PORT_DIPNAME( 0x04, 0x00, "S03")
163   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
164   PORT_DIPSETTING(    0x04, DEF_STR( On ))
165   PORT_DIPNAME( 0x08, 0x00, "S04")
166   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
167   PORT_DIPSETTING(    0x08, DEF_STR( On ))
168   PORT_DIPNAME( 0x10, 0x00, "S05")
169   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
170   PORT_DIPSETTING(    0x10, DEF_STR( On ))
171   PORT_DIPNAME( 0x20, 0x00, "S06")
172   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
173   PORT_DIPSETTING(    0x20, DEF_STR( On ))
174   PORT_DIPNAME( 0x40, 0x00, "S07")
175   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
176   PORT_DIPSETTING(    0x40, DEF_STR( On ))
177   PORT_DIPNAME( 0x80, 0x00, "S08")
178   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
179   PORT_DIPSETTING(    0x80, DEF_STR( On ))
180
181   PORT_START("DSW1")
182   PORT_DIPNAME( 0x01, 0x00, "S09")
183   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
184   PORT_DIPSETTING(    0x01, DEF_STR( On ))
185   PORT_DIPNAME( 0x02, 0x00, "S10")
186   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
187   PORT_DIPSETTING(    0x02, DEF_STR( On ))
188   PORT_DIPNAME( 0x04, 0x00, "S11")
189   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
190   PORT_DIPSETTING(    0x04, DEF_STR( On ))
191   PORT_DIPNAME( 0x08, 0x00, "S12")
192   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
193   PORT_DIPSETTING(    0x08, DEF_STR( On ))
194   PORT_DIPNAME( 0x10, 0x00, "S13")
195   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
196   PORT_DIPSETTING(    0x10, DEF_STR( On ))
197   PORT_DIPNAME( 0x20, 0x00, "S14")
198   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
199   PORT_DIPSETTING(    0x20, DEF_STR( On ))
200   PORT_DIPNAME( 0x40, 0x00, "S15")
201   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
202   PORT_DIPSETTING(    0x40, DEF_STR( On ))
203   PORT_DIPNAME( 0x80, 0x00, "S16")
204   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
205   PORT_DIPSETTING(    0x80, DEF_STR( On ))
206
207   PORT_START("DSW2")
208   PORT_DIPNAME( 0x01, 0x00, "S17")
209   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
210   PORT_DIPSETTING(    0x01, DEF_STR( On ))
211   PORT_DIPNAME( 0x02, 0x00, "S18")
212   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
213   PORT_DIPSETTING(    0x02, DEF_STR( On ))
214   PORT_DIPNAME( 0x04, 0x00, "S19")
215   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
216   PORT_DIPSETTING(    0x04, DEF_STR( On ))
217   PORT_DIPNAME( 0x08, 0x00, "S20")
218   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
219   PORT_DIPSETTING(    0x08, DEF_STR( On ))
220   PORT_DIPNAME( 0x10, 0x00, "S21")
221   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
222   PORT_DIPSETTING(    0x10, DEF_STR( On ))
223   PORT_DIPNAME( 0x20, 0x00, "S22")
224   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
225   PORT_DIPSETTING(    0x20, DEF_STR( On ))
226   PORT_DIPNAME( 0x40, 0x00, "S23")
227   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
228   PORT_DIPSETTING(    0x40, DEF_STR( On ))
229   PORT_DIPNAME( 0x80, 0x00, "S24")
230   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
231   PORT_DIPSETTING(    0x80, DEF_STR( On ))
232
233   PORT_START("DSW3")
234   PORT_DIPNAME( 0x01, 0x00, "S25")
235   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
236   PORT_DIPSETTING(    0x01, DEF_STR( On ))
237   PORT_DIPNAME( 0x02, 0x00, "S26")
238   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
239   PORT_DIPSETTING(    0x02, DEF_STR( On ))
240   PORT_DIPNAME( 0x04, 0x00, "S27")
241   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
242   PORT_DIPSETTING(    0x04, DEF_STR( On ))
243   PORT_DIPNAME( 0x08, 0x00, "S28")
244   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
245   PORT_DIPSETTING(    0x08, DEF_STR( On ))
246   PORT_DIPNAME( 0x10, 0x00, "S29")
247   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
248   PORT_DIPSETTING(    0x10, DEF_STR( On ))
249   PORT_DIPNAME( 0x20, 0x00, DEF_STR( Free_Play ) )
250   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
251   PORT_DIPSETTING(    0x20, DEF_STR( On ))
252   PORT_DIPNAME( 0x40, 0x00, "S31")
253   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
254   PORT_DIPSETTING(    0x40, DEF_STR( On ))
255   PORT_DIPNAME( 0x80, 0x00, "S32")
256   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
257   PORT_DIPSETTING(    0x80, DEF_STR( On ))
102258INPUT_PORTS_END
103259
104260
105WRITE_LINE_MEMBER(by133_state::vdp_interrupt)
261READ8_MEMBER( by133_state::sound_data_r )
262{//printf("%X ",m_mpu_to_vid);
263   return m_mpu_to_vid;
264}
265
266WRITE8_MEMBER( by133_state::sound_data_w )
106267{
107   m_videocpu->set_input_line(M6809_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
268   m_vid_to_mpu = data;
108269}
109270
110WRITE_LINE_MEMBER(by133_state::by133_firq)
271READ8_MEMBER( by133_state::m6803_port2_r )
111272{
112   m_videocpu->set_input_line(M6809_FIRQ_LINE, (m_videopia->irq_a_state() || m_videopia->irq_b_state()) ? ASSERT_LINE : CLEAR_LINE);
273   //printf("%X %s\n",m_u7_b,machine().describe_context());
274   //machine().scheduler().synchronize();
275   return (m_u7_b << 1) | 0;
113276}
114277
115WRITE_LINE_MEMBER(by133_state::by133_cb2)
278WRITE8_MEMBER( by133_state::m6803_port2_w )
116279{
117   // to M6803 port 2 d0?
118//  m_audiocpu->set_input_line(M6801_TIN_LINE, state ? ASSERT_LINE : CLEAR_LINE);
280   //m_u7_b = data >> 1;
281   m_beep->set_frequency(600);
282   m_beep->set_state(BIT(data, 0));
119283}
120284
121READ8_MEMBER(by133_state::by133_portb_r)
285WRITE_LINE_MEMBER( by133_state::u7_ca2_w )
122286{
123   return 0;
287   // comms out
124288}
125289
126WRITE8_MEMBER(by133_state::by133_portb_w)
290WRITE_LINE_MEMBER( by133_state::u10_ca2_w )
127291{
128   machine().scheduler().synchronize();
292   // enable digital display
293}
129294
130   // d0-d3 to m6803 d1-d4
131   m_sound_port2 = data << 1 & 0x1f;
295WRITE_LINE_MEMBER( by133_state::u11_ca2_w )
296{
297   // green led
132298}
133299
300WRITE_LINE_MEMBER( by133_state::u7_cb2_w )
301{
302   // red led
303   m_beep->set_frequency(950);
304   m_beep->set_state(state);
305   //address_space &space = m_audiocpu->space(AS_PROGRAM);
306   //m_audiocpu->m6801_io_r(space, 3, ((m_u7_b << 1) | (UINT8)state) );
307   m_audiocpu->set_input_line(M6801_TIN_LINE, state ? ASSERT_LINE : CLEAR_LINE);
308}
309
310WRITE_LINE_MEMBER( by133_state::u10_cb2_w )
311{
312   // lamp strobe #1
313   m_u10_cb2 = state;
314}
315
316WRITE_LINE_MEMBER( by133_state::u11_cb2_w )
317{
318   // solenoid-sound selector
319}
320
321READ8_MEMBER( by133_state::u7_a_r )
322{
323   return m_u7_a;
324}
325
326WRITE8_MEMBER( by133_state::u7_a_w )
327{
328   m_u7_a = data;
329}
330
331READ8_MEMBER( by133_state::u7_b_r )
332{
333   return m_u7_b;
334}
335
336WRITE8_MEMBER( by133_state::u7_b_w )
337{
338   //machine().scheduler().synchronize();
339   m_u7_b = data;
340}
341
342READ8_MEMBER( by133_state::u10_a_r )
343{
344   return m_u10_a;
345}
346
347WRITE8_MEMBER( by133_state::u10_a_w )
348{
349   m_u10_a = data;
350   if (BIT(m_u11_a, 2) == 0)
351      m_mpu_to_vid = data ^ 0x0f;
352}
353
354READ8_MEMBER( by133_state::u10_b_r )
355{
356   if (BIT(m_u11_a, 3) == 0)
357      return ~m_u7_a & 0x03;
358
359   if (BIT(m_u11_a, 1) == 0)
360      return m_vid_to_mpu;
361
362   UINT8 data = 0;
363
364   if (BIT(m_u10_a, 5))
365      data |= ioport("DSW0")->read();
366
367   if (BIT(m_u10_a, 6))
368      data |= ioport("DSW1")->read();
369
370   if (BIT(m_u10_a, 7))
371      data |= ioport("DSW2")->read();
372
373   if (m_u10_cb2)
374      data |= ioport("DSW3")->read();
375
376   return data;
377}
378
379WRITE8_MEMBER( by133_state::u10_b_w )
380{
381   m_u10_b = data;
382}
383
384READ8_MEMBER( by133_state::u11_a_r )
385{
386   return m_u11_a;
387}
388
389WRITE8_MEMBER( by133_state::u11_a_w )
390{
391   m_u11_a = data;
392   m_pia_u7->ca1_w(BIT(data, 1));
393     m_pia_u7->ca2_w(BIT(data, 2));
394}
395
396READ8_MEMBER( by133_state::u11_b_r )
397{
398   return m_u11_b;
399}
400
401WRITE8_MEMBER( by133_state::u11_b_w )
402{
403   m_u11_b = data;
404}
405
406// zero-cross detection
407TIMER_DEVICE_CALLBACK_MEMBER( by133_state::u10_timer )
408{
409   m_u10_timer ^= 1;
410   m_pia_u10->cb1_w(m_u10_timer);
411}   
412
413// 555 timer for display refresh
414TIMER_DEVICE_CALLBACK_MEMBER( by133_state::u11_timer )
415{
416   m_u11_timer ^= 1;
417   m_pia_u11->ca1_w(m_u11_timer);
418}
419
134420void by133_state::machine_reset()
135421{
136   m_sound_port2 = 2; // forced to 010 on /reset
422   m_u7_a = 0;
423   m_u7_b = 1; // select mode 2 of mc6803 on /reset
424   m_u10_a = 0;
425   m_u10_b = 0;
426   m_u10_cb2 = 0;
427   m_u11_a = 0;
428   m_u11_b = 0;
429   m_mpu_to_vid = 0;
430   m_vid_to_mpu = 0;
431   m_beep->set_state(0);
137432}
138433
139434static MACHINE_CONFIG_START( by133, by133_state )
140435   /* basic machine hardware */
141   MCFG_CPU_ADD("maincpu", M6800, 3580000/4)
142   MCFG_DEVICE_DISABLE()
436   MCFG_CPU_ADD("maincpu", M6800, XTAL_3_579545MHz/4) // no xtal, just 2 chips
143437   MCFG_CPU_PROGRAM_MAP(main_map)
144438
145   MCFG_CPU_ADD("videocpu", M6809, 3580000/4)
439   MCFG_CPU_ADD("videocpu", M6809E, XTAL_3_579545MHz)
146440   MCFG_CPU_PROGRAM_MAP(video_map)
147441
148442   MCFG_CPU_ADD("audiocpu", M6803, XTAL_3_579545MHz)
149443   MCFG_CPU_PROGRAM_MAP(sound_map)
150444   MCFG_CPU_IO_MAP(sound_portmap)
151445
152   MCFG_DEVICE_ADD("videopia", PIA6821, 0)
153   MCFG_PIA_READPB_HANDLER(READ8(by133_state, by133_portb_r))
154   MCFG_PIA_WRITEPB_HANDLER(WRITE8(by133_state, by133_portb_w))
155   MCFG_PIA_CB2_HANDLER(WRITELINE(by133_state, by133_cb2))
156   MCFG_PIA_IRQA_HANDLER(WRITELINE(by133_state, by133_firq))
157   MCFG_PIA_IRQB_HANDLER(WRITELINE(by133_state, by133_firq))
446   MCFG_DEVICE_ADD("pia_u7", PIA6821, 0)
447   MCFG_PIA_READPA_HANDLER(READ8(by133_state, u7_a_r))
448   MCFG_PIA_WRITEPA_HANDLER(WRITE8(by133_state, u7_a_w))
449   MCFG_PIA_READPB_HANDLER(READ8(by133_state, u7_b_r))
450   MCFG_PIA_WRITEPB_HANDLER(WRITE8(by133_state, u7_b_w))
451   MCFG_PIA_CA2_HANDLER(WRITELINE(by133_state, u7_ca2_w))
452   MCFG_PIA_CB2_HANDLER(WRITELINE(by133_state, u7_cb2_w))
453   MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("videocpu", m6809e_device, firq_line))
454   MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("videocpu", m6809e_device, firq_line))
158455
456   MCFG_DEVICE_ADD("pia_u10", PIA6821, 0)
457   MCFG_PIA_READPA_HANDLER(READ8(by133_state, u10_a_r))
458   MCFG_PIA_WRITEPA_HANDLER(WRITE8(by133_state, u10_a_w))
459   MCFG_PIA_READPB_HANDLER(READ8(by133_state, u10_b_r))
460   MCFG_PIA_WRITEPB_HANDLER(WRITE8(by133_state, u10_b_w))
461   MCFG_PIA_CA2_HANDLER(WRITELINE(by133_state, u10_ca2_w))
462   MCFG_PIA_CB2_HANDLER(WRITELINE(by133_state, u10_cb2_w))
463   MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
464   MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
465   MCFG_TIMER_DRIVER_ADD_PERIODIC("babypac1", by133_state, u10_timer, attotime::from_hz(120)) // mains freq
466
467   MCFG_DEVICE_ADD("pia_u11", PIA6821, 0)
468   MCFG_PIA_READPA_HANDLER(READ8(by133_state, u11_a_r))
469   MCFG_PIA_WRITEPA_HANDLER(WRITE8(by133_state, u11_a_w))
470   MCFG_PIA_READPB_HANDLER(READ8(by133_state, u11_b_r))
471   MCFG_PIA_WRITEPB_HANDLER(WRITE8(by133_state, u11_b_w))
472   MCFG_PIA_CA2_HANDLER(WRITELINE(by133_state, u11_ca2_w))
473   MCFG_PIA_CB2_HANDLER(WRITELINE(by133_state, u11_cb2_w))
474   MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
475   MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
476   MCFG_TIMER_DRIVER_ADD_PERIODIC("babypac2", by133_state, u11_timer, attotime::from_hz(634)) // 555 timer
477
159478   /* video hardware */
160479   MCFG_DEVICE_ADD( "tms9928a", TMS9928A, XTAL_10_738635MHz / 2 )
161480   MCFG_TMS9928A_VRAM_SIZE(0x4000)
162   MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(by133_state, vdp_interrupt))
481   MCFG_TMS9928A_OUT_INT_LINE_CB(DEVWRITELINE("videocpu", m6809e_device, irq_line))
163482   MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" )
164483   MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update )
165484
166485   /* sound hardware */
167486   MCFG_SPEAKER_STANDARD_MONO("mono")
168
169487   MCFG_DAC_ADD("dac")
170488   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
489   MCFG_SPEAKER_STANDARD_MONO("beee")
490   MCFG_SOUND_ADD("beeper", BEEP, 0)
491   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "beee", 0.10)
171492MACHINE_CONFIG_END
172493
173494/*-----------------------------------------------------
174495/ Baby Pacman (Video/Pinball Combo) (BY133-891:  10/82)
175496/-----------------------------------------------------*/
176497ROM_START(babypac)
177   ROM_REGION(0x10000, "maincpu", 0)
178   ROM_LOAD( "891-u2.732", 0x1000, 0x0800, CRC(7f7242d1) SHA1(213a697bb7fc69f93ea04621f0fcfdd796f35196))
179   ROM_CONTINUE( 0x5000, 0x0800)
180   ROM_LOAD( "891-u6.732", 0x1800, 0x0800, CRC(6136d636) SHA1(c01a0a2fcad3bdabd649128e012ab558b1c90cd3) )
181   ROM_CONTINUE( 0x5800, 0x0800)
182   ROM_RELOAD(   0x7000, 0x1000)
498   ROM_REGION(0x2000, "roms", 0)
499   ROM_LOAD( "891-u2.732", 0x0000, 0x1000, CRC(7f7242d1) SHA1(213a697bb7fc69f93ea04621f0fcfdd796f35196))
500   ROM_LOAD( "891-u6.732", 0x1000, 0x1000, CRC(6136d636) SHA1(c01a0a2fcad3bdabd649128e012ab558b1c90cd3) )
183501
184502   ROM_REGION(0x10000, "videocpu", 0)
185503   ROM_LOAD( "891-16-u09.764", 0x8000, 0x2000, CRC(781e90e9) SHA1(940047cc875ae531a825af069bb650d59c9495a6))
r31249r31250
192510ROM_END
193511
194512ROM_START(babypac2)
195   ROM_REGION(0x10000, "maincpu", 0)
196   ROM_LOAD( "891-u2.732", 0x1000, 0x0800, CRC(7f7242d1) SHA1(213a697bb7fc69f93ea04621f0fcfdd796f35196))
197   ROM_CONTINUE( 0x5000, 0x0800)
198   ROM_LOAD( "891-u6.732", 0x1800, 0x0800, CRC(6136d636) SHA1(c01a0a2fcad3bdabd649128e012ab558b1c90cd3) )
199   ROM_CONTINUE( 0x5800, 0x0800)
200   ROM_RELOAD(   0x7000, 0x1000)
513   ROM_REGION(0x2000, "roms", 0)
514   ROM_LOAD( "891-u2.732", 0x0000, 0x1000, CRC(7f7242d1) SHA1(213a697bb7fc69f93ea04621f0fcfdd796f35196))
515   ROM_LOAD( "891-u6.732", 0x1000, 0x1000, CRC(6136d636) SHA1(c01a0a2fcad3bdabd649128e012ab558b1c90cd3) )
201516
202517   ROM_REGION(0x10000, "videocpu", 0)
203518   ROM_LOAD( "891-13-u09.764", 0x8000, 0x2000, CRC(7fa570f3) SHA1(423ad9266b1ded00fa52ce4180d518874142a203))
r31249r31250
213528/ Granny and the Gators (Video/Pinball Combo) - (BY35-???: 01/84)
214529/----------------------------------------------------------------*/
215530ROM_START(granny)
216   ROM_REGION(0x10000, "maincpu", 0)
217   ROM_LOAD( "cpu_u2.532", 0x1000, 0x0800, CRC(d45bb956) SHA1(86a6942ff9fe38fa109ecde40dc2dd19adf938a9))
218   ROM_CONTINUE( 0x5000, 0x0800)
219   ROM_LOAD( "cpu_u6.532", 0x1800, 0x0800, CRC(306aa673) SHA1(422c3d9decf9214a18edb536c2077bf52b272e7d) )
220   ROM_CONTINUE( 0x5800, 0x0800)
221   ROM_RELOAD(   0xf000, 0x1000)
531   ROM_REGION(0x2000, "roms", 0)
532   ROM_LOAD( "cpu_u2.532", 0x0000, 0x1000, CRC(d45bb956) SHA1(86a6942ff9fe38fa109ecde40dc2dd19adf938a9))
533   ROM_LOAD( "cpu_u6.532", 0x1000, 0x1000, CRC(306aa673) SHA1(422c3d9decf9214a18edb536c2077bf52b272e7d) )
222534
223535   ROM_REGION(0x10000, "videocpu", 0)
224536   ROM_LOAD( "vid_u4.764", 0x4000, 0x2000, CRC(3a3d4c6b) SHA1(a6c27eee178a4bde67004e11f6ddf3b6414571dd))
r31249r31250
233545ROM_END
234546
235547
236GAME( 1982, babypac,  0,        by133,  by133, driver_device,  0,  ROT90, "Dave Nutting Associates / Bally",    "Baby Pac-Man (set 1)",     GAME_IS_SKELETON_MECHANICAL)
237GAME( 1982, babypac2, babypac,  by133,  by133, driver_device,  0,  ROT90, "Dave Nutting Associates / Bally",    "Baby Pac-Man (set 2)",     GAME_IS_SKELETON_MECHANICAL)
238GAME( 1984, granny,   0,        by133,  by133, driver_device,  0,  ROT0,  "Bally",    "Granny and the Gators",    GAME_IS_SKELETON_MECHANICAL)
548GAME( 1982, babypac,  0,        by133,  by133, driver_device,  0,  ROT90, "Dave Nutting Associates / Bally", "Baby Pac-Man (set 1)", GAME_IS_SKELETON_MECHANICAL)
549GAME( 1982, babypac2, babypac,  by133,  by133, driver_device,  0,  ROT90, "Dave Nutting Associates / Bally", "Baby Pac-Man (set 2)", GAME_IS_SKELETON_MECHANICAL)
550GAME( 1984, granny,   0,        by133,  by133, driver_device,  0,  ROT0,  "Bally", "Granny and the Gators", GAME_IS_SKELETON_MECHANICAL)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team