Previous 199869 Revisions Next

r17659 Wednesday 5th September, 2012 at 16:25:28 UTC by Curt Coder
mos6560: Refactored interface to use devcb. (nw)
[src/emu/sound]mos6560.c mos6560.h
[src/mame/drivers]attckufo.c
[src/mess/drivers]vic20.c
[src/mess/includes]vic20.h

trunk/src/mame/drivers/attckufo.c
r17658r17659
6666
6767   DECLARE_READ8_MEMBER(attckufo_io_r);
6868   DECLARE_WRITE8_MEMBER(attckufo_io_w);
69};
7069
71
72
73static const rgb_t attckufo_palette[] =
74{
75/* ripped from vice, a very excellent emulator */
76   MAKE_RGB(0x00, 0x00, 0x00),
77   MAKE_RGB(0xff, 0xff, 0xff),
78   MAKE_RGB(0xf0, 0x00, 0x00),
79   MAKE_RGB(0x00, 0xf0, 0xf0),
80
81   MAKE_RGB(0x60, 0x00, 0x60),
82   MAKE_RGB(0x00, 0xa0, 0x00),
83   MAKE_RGB(0x00, 0x00, 0xf0),
84   MAKE_RGB(0xd0, 0xd0, 0x00),
85
86   MAKE_RGB(0xc0, 0xa0, 0x00),
87   MAKE_RGB(0xff, 0xa0, 0x00),
88   MAKE_RGB(0xf0, 0x80, 0x80),
89   MAKE_RGB(0x00, 0xff, 0xff),
90
91   MAKE_RGB(0xff, 0x00, 0xff),
92   MAKE_RGB(0x00, 0xff, 0x00),
93   MAKE_RGB(0x00, 0xa0, 0xff),
94   MAKE_RGB(0xff, 0xff, 0x00)
70   DECLARE_READ8_MEMBER(dma_read);
71   DECLARE_READ8_MEMBER(dma_read_color);
9572};
9673
97static PALETTE_INIT( attckufo )
98{
99   palette_set_colors(machine, 0, attckufo_palette, ARRAY_LENGTH(attckufo_palette));
100}
101
102
10374READ8_MEMBER(attckufo_state::attckufo_io_r)
10475{
10576   switch(offset)
r17658r17659
172143   return 0;
173144}
174145
175static int attckufo_dma_read( running_machine &machine, int offset )
146READ8_MEMBER(attckufo_state::dma_read)
176147{
177   attckufo_state *state = machine.driver_data<attckufo_state>();
178   return state->m_maincpu->space(AS_PROGRAM)->read_byte(offset);
148   return m_maincpu->space(AS_PROGRAM)->read_byte(offset);
179149}
180150
181static int attckufo_dma_read_color( running_machine &machine, int offset )
151READ8_MEMBER(attckufo_state::dma_read_color)
182152{
183   attckufo_state *state = machine.driver_data<attckufo_state>();
184   return state->m_maincpu->space(AS_PROGRAM)->read_byte(offset + 0x400);
153   return m_maincpu->space(AS_PROGRAM)->read_byte(offset + 0x400);
185154}
186155
187156static const mos6560_interface attckufo_6560_intf =
188157{
189158   "screen",   /* screen */
190159   MOS6560_ATTACKUFO,
191   NULL, NULL, NULL,   /* lightgun cb */
192   NULL, NULL,      /* paddle cb */
193   attckufo_dma_read, attckufo_dma_read_color   /* DMA */
160   DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,   /* lightgun cb */
161   DEVCB_NULL, DEVCB_NULL,      /* paddle cb */
162   DEVCB_DRIVER_MEMBER(attckufo_state, dma_read),
163   DEVCB_DRIVER_MEMBER(attckufo_state, dma_read_color)   /* DMA */
194164};
195165
196166
r17658r17659
209179   MCFG_SCREEN_VISIBLE_AREA(0, 23*8 - 1, 0, 22*8 - 1)
210180   MCFG_SCREEN_UPDATE_STATIC(attckufo)
211181
212   MCFG_PALETTE_LENGTH(ARRAY_LENGTH(attckufo_palette))
213   MCFG_PALETTE_INIT(attckufo)
182   MCFG_PALETTE_LENGTH(16)
183   MCFG_PALETTE_INIT(mos6560)
214184
215185   /* sound hardware */
216186   MCFG_SPEAKER_STANDARD_MONO("mono")
trunk/src/emu/sound/mos6560.c
r17658r17659
9292   int total_xsize, total_ysize, total_lines, total_vretracerate;
9393
9494   /* DMA */
95   mos6560_dma_read          dma_read;
96   mos6560_dma_read_color    dma_read_color;
95   devcb_resolved_read8   dma_read;
96   devcb_resolved_read8   dma_read_color;
9797   UINT8 last_data;
9898
9999   /* lightpen */
100   mos6560_lightpen_button_callback lightpen_button_cb;
101   mos6560_lightpen_x_callback lightpen_x_cb;
102   mos6560_lightpen_y_callback lightpen_y_cb;
100   devcb_resolved_read8   lightpen_button_cb;
101   devcb_resolved_read8   lightpen_x_cb;
102   devcb_resolved_read8   lightpen_y_cb;
103103
104104   /* paddles */
105   mos6560_paddle_callback        paddle_cb[2];
105   devcb_resolved_read8   paddle_cb[2];
106106
107107   /* sound part */
108108   int tone1pos, tone2pos, tone3pos,
r17658r17659
154154
155155/* 2008-05 FP: lightpen code needs to read input port from vc20.c */
156156
157#define LIGHTPEN_BUTTON      ((mos6560->lightpen_button_cb != NULL) ? mos6560->lightpen_button_cb(device->machine()) : 0)
158#define LIGHTPEN_X_VALUE   ((mos6560->lightpen_x_cb != NULL) ? mos6560->lightpen_x_cb(device->machine()) : 0)
159#define LIGHTPEN_Y_VALUE   ((mos6560->lightpen_y_cb != NULL) ? mos6560->lightpen_y_cb(device->machine()) : 0)
157#define LIGHTPEN_BUTTON      ((!mos6560->lightpen_button_cb.isnull()) ? mos6560->lightpen_button_cb(0) : 0)
158#define LIGHTPEN_X_VALUE   ((!mos6560->lightpen_x_cb.isnull()) ? mos6560->lightpen_x_cb(0) : 0)
159#define LIGHTPEN_Y_VALUE   ((!mos6560->lightpen_y_cb.isnull()) ? mos6560->lightpen_y_cb(0) : 0)
160160
161161/* lightpen delivers values from internal counters
162162 * they do not start with the visual area or frame area */
r17658r17659
198198#define BACKGROUNDCOLOR (mos6560->reg[0x0f] >> 4)
199199#define FRAMECOLOR (mos6560->reg[0x0f] & 0x07)
200200
201
202static const rgb_t PALETTE[] =
203{
204/* ripped from vice, a very excellent emulator */
205   MAKE_RGB(0x00, 0x00, 0x00),
206   MAKE_RGB(0xff, 0xff, 0xff),
207   MAKE_RGB(0xf0, 0x00, 0x00),
208   MAKE_RGB(0x00, 0xf0, 0xf0),
209
210   MAKE_RGB(0x60, 0x00, 0x60),
211   MAKE_RGB(0x00, 0xa0, 0x00),
212   MAKE_RGB(0x00, 0x00, 0xf0),
213   MAKE_RGB(0xd0, 0xd0, 0x00),
214
215   MAKE_RGB(0xc0, 0xa0, 0x00),
216   MAKE_RGB(0xff, 0xa0, 0x00),
217   MAKE_RGB(0xf0, 0x80, 0x80),
218   MAKE_RGB(0x00, 0xff, 0xff),
219
220   MAKE_RGB(0xff, 0x00, 0xff),
221   MAKE_RGB(0x00, 0xff, 0x00),
222   MAKE_RGB(0x00, 0xa0, 0xff),
223   MAKE_RGB(0xff, 0xff, 0x00)
224};
225
226PALETTE_INIT( mos6560 )
227{
228   palette_set_colors(machine, 0, PALETTE, ARRAY_LENGTH(PALETTE));
229}
230
231
201232/*****************************************************************************
202233    IMPLEMENTATION
203234*****************************************************************************/
r17658r17659
215246
216247   for (y = ybegin; y <= yend; y++)
217248   {
218      code = mos6560->dma_read(device->machine(), (mos6560->chargenaddr + ch * mos6560->charheight + y) & 0x3fff);
249      code = mos6560->dma_read((mos6560->chargenaddr + ch * mos6560->charheight + y) & 0x3fff);
219250      mos6560->last_data = code;
220251      mos6560->bitmap->pix16(y + yoff, xoff + 0) = color[code >> 7];
221252      mos6560->bitmap->pix16(y + yoff, xoff + 1) = color[(code >> 6) & 1];
r17658r17659
240271
241272   for (y = ybegin; y <= yend; y++)
242273   {
243      code = mos6560->dma_read(device->machine(), (mos6560->chargenaddr + ch * mos6560->charheight + y) & 0x3fff);
274      code = mos6560->dma_read((mos6560->chargenaddr + ch * mos6560->charheight + y) & 0x3fff);
244275      mos6560->last_data = code;
245276      mos6560->bitmap->pix16(y + yoff, xoff + 0) =
246277         mos6560->bitmap->pix16(y + yoff, xoff + 1) = color[code >> 6];
r17658r17659
301332
302333      for (xoff = mos6560->xpos; (xoff < mos6560->xpos + mos6560->xsize) && (xoff < mos6560->total_xsize); xoff += 8, offs++)
303334      {
304         ch = mos6560->dma_read(device->machine(), (mos6560->videoaddr + offs) & 0x3fff);
335         ch = mos6560->dma_read((mos6560->videoaddr + offs) & 0x3fff);
305336         mos6560->last_data = ch;
306         attr = (mos6560->dma_read_color(device->machine(), (mos6560->videoaddr + offs) & 0x3fff)) & 0xf;
337         attr = (mos6560->dma_read_color((mos6560->videoaddr + offs) & 0x3fff)) & 0xf;
307338
308339         if (mos6560->type == MOS6560_ATTACKUFO)
309340         {
r17658r17659
479510      break;
480511   case 8:                     /* poti 1 */
481512   case 9:                     /* poti 2 */
482      val = (mos6560->paddle_cb != NULL) ? mos6560->paddle_cb[offset - 8](device->machine()) : mos6560->reg[offset];
513      val = (!mos6560->paddle_cb->isnull()) ? mos6560->paddle_cb[offset - 8](0) : mos6560->reg[offset];
483514      break;
484515   default:
485516      val = mos6560->reg[offset];
r17658r17659
489520   return val;
490521}
491522
492UINT8 mos6560_bus_r( device_t *device )
523UINT8 mos6560_device::bus_r()
493524{
494   mos6560_state *mos6560 = get_safe_token(device);
525   mos6560_state *mos6560 = get_safe_token(this);
495526
496527   return mos6560->last_data;
497528}
r17658r17659
527558   return 0;
528559}
529560
561UINT32 mos6560_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
562{
563   return mos6560_video_update(this, bitmap, cliprect);
564}
565
530566/*****************************************************************************
531567    SOUND IMPLEMENTATION
532568*****************************************************************************/
r17658r17659
820856
821857   mos6560->bitmap = auto_bitmap_ind16_alloc(device->machine(), width, height);
822858
823   assert(intf->dma_read != NULL);
824   assert(intf->dma_read_color != NULL);
859   // resolve callbacks
860   mos6560->dma_read.resolve(intf->dma_read, *device);
861   mos6560->dma_read_color.resolve(intf->dma_read_color, *device);
862   mos6560->lightpen_button_cb.resolve(intf->button_cb, *device);
863   mos6560->lightpen_x_cb.resolve(intf->x_cb, *device);
864   mos6560->lightpen_y_cb.resolve(intf->y_cb, *device);
865   mos6560->paddle_cb[0].resolve(intf->paddle0_cb, *device);
866   mos6560->paddle_cb[1].resolve(intf->paddle1_cb, *device);
825867
826   mos6560->dma_read = intf->dma_read;
827   mos6560->dma_read_color = intf->dma_read_color;
828
829   mos6560->lightpen_button_cb = intf->button_cb;
830   mos6560->lightpen_x_cb = intf->x_cb;
831   mos6560->lightpen_y_cb = intf->y_cb;
832
833   mos6560->paddle_cb[0] = intf->paddle0_cb;
834   mos6560->paddle_cb[1] = intf->paddle1_cb;
835
836868   switch (mos6560->type)
837869   {
838870   case MOS6560:
trunk/src/emu/sound/mos6560.h
r17658r17659
1515    TYPE DEFINITIONS
1616***************************************************************************/
1717
18typedef UINT8 (*mos6560_lightpen_x_callback)(running_machine &machine);
19typedef UINT8 (*mos6560_lightpen_y_callback)(running_machine &machine);
20typedef UINT8 (*mos6560_lightpen_button_callback)(running_machine &machine);
21typedef UINT8 (*mos6560_paddle_callback)(running_machine &machine);
22
23typedef int (*mos6560_dma_read)(running_machine &machine, int);
24typedef int (*mos6560_dma_read_color)(running_machine &machine, int);
25
26
2718typedef enum
2819{
2920   MOS6560_ATTACKUFO,        // this is a 6560VIC derivative, missing some of the features
r17658r17659
3425typedef struct _mos6560_interface mos6560_interface;
3526struct _mos6560_interface
3627{
37   const char         *screen;
28   const char      *screen;
3829
39   mos6560_type type;
30   mos6560_type   type;
4031
41   mos6560_lightpen_x_callback        x_cb;
42   mos6560_lightpen_y_callback        y_cb;
43   mos6560_lightpen_button_callback   button_cb;
32   devcb_read8      x_cb;
33   devcb_read8      y_cb;
34   devcb_read8      button_cb;
4435
45   mos6560_paddle_callback        paddle0_cb, paddle1_cb;
36   devcb_read8      paddle0_cb, paddle1_cb;
4637
47   mos6560_dma_read          dma_read;
48   mos6560_dma_read_color    dma_read_color;
38   devcb_read8      dma_read;
39   devcb_read8      dma_read_color;
4940};
5041
5142/***************************************************************************
r17658r17659
9788
9889   // access to legacy token
9990   void *token() const { assert(m_token != NULL); return m_token; }
91
92   UINT8 bus_r();
93
94   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
95
10096protected:
10197   // device-level overrides
10298   virtual void device_config_complete();
r17658r17659
121117   MCFG_SOUND_ADD(_tag, MOS656X, 0) \
122118   MCFG_DEVICE_CONFIG(_interface)
123119
120#define MCFG_MOS6560_ADD(_tag, _screen_tag, _clock, _config) \
121   MCFG_SCREEN_ADD(_screen_tag, RASTER) \
122   MCFG_SCREEN_REFRESH_RATE(MOS6560_VRETRACERATE) \
123   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) \
124   MCFG_SCREEN_SIZE((MOS6560_XSIZE + 7) & ~7, MOS6560_YSIZE) \
125   MCFG_SCREEN_VISIBLE_AREA(MOS6560_MAME_XPOS, MOS6560_MAME_XPOS + MOS6560_MAME_XSIZE - 1, MOS6560_MAME_YPOS, MOS6560_MAME_YPOS + MOS6560_MAME_YSIZE - 1) \
126   MCFG_SCREEN_UPDATE_DEVICE(_tag, mos6560_device, screen_update) \
127   MCFG_PALETTE_LENGTH(16) \
128   MCFG_PALETTE_INIT(mos6560) \
129   MCFG_SOUND_ADD(_tag, MOS656X, _clock) \
130   MCFG_DEVICE_CONFIG(_config)
124131
132#define MCFG_MOS6561_ADD(_tag, _screen_tag, _clock, _config) \
133   MCFG_SCREEN_ADD(_screen_tag, RASTER) \
134   MCFG_SCREEN_REFRESH_RATE(MOS6561_VRETRACERATE) \
135   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) \
136   MCFG_SCREEN_SIZE((MOS6561_XSIZE + 7) & ~7, MOS6561_YSIZE) \
137   MCFG_SCREEN_VISIBLE_AREA(MOS6561_MAME_XPOS, MOS6561_MAME_XPOS + MOS6561_MAME_XSIZE - 1, MOS6561_MAME_YPOS, MOS6561_MAME_YPOS + MOS6561_MAME_YSIZE - 1) \
138   MCFG_SCREEN_UPDATE_DEVICE(_tag, mos6560_device, screen_update) \
139   MCFG_PALETTE_LENGTH(16) \
140   MCFG_PALETTE_INIT(mos6560) \
141   MCFG_SOUND_ADD(_tag, MOS656X, _clock) \
142   MCFG_DEVICE_CONFIG(_config)
143
125144/***************************************************************************
126145    I/O PROTOTYPES
127146***************************************************************************/
r17658r17659
129148WRITE8_DEVICE_HANDLER( mos6560_port_w );
130149READ8_DEVICE_HANDLER( mos6560_port_r );
131150
132UINT8 mos6560_bus_r( device_t *device );
133151void mos6560_raster_interrupt_gen( device_t *device );
134152UINT32 mos6560_video_update( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect );
135153
154extern PALETTE_INIT( mos6560 );
136155
137156#endif /* __MOS6560_H__ */
trunk/src/mess/includes/vic20.h
r17658r17659
5252   required_device<cpu_device> m_maincpu;
5353   required_device<via6522_device> m_via0;
5454   required_device<via6522_device> m_via1;
55   required_device<device_t> m_vic;
55   required_device<mos6560_device> m_vic;
5656   required_device<cbm_iec_device> m_iec;
5757   required_device<vcs_control_port_device> m_joy1;
5858   required_device<vcs_control_port_device> m_joy2;
r17658r17659
6767   DECLARE_READ8_MEMBER( read );
6868   DECLARE_WRITE8_MEMBER( write );
6969
70   DECLARE_READ8_MEMBER( vic_lightx_cb );
71   DECLARE_READ8_MEMBER( vic_lighty_cb );
72   DECLARE_READ8_MEMBER( vic_lightbut_cb );
73   DECLARE_READ8_MEMBER( vic_dma_read );
74   DECLARE_READ8_MEMBER( vic_dma_read_color );
75   
7076   DECLARE_READ8_MEMBER( via0_pa_r );
7177   DECLARE_WRITE8_MEMBER( via0_pa_w );
7278
trunk/src/mess/drivers/vic20.c
r17658r17659
123123
124124READ8_MEMBER( vic20_state::read )
125125{
126   UINT8 data = mos6560_bus_r(m_vic);
126   UINT8 data = m_vic->bus_r();
127127
128128   int ram1 = 1, ram2 = 1, ram3 = 1;
129129   int blk1 = 1, blk2 = 1, blk3 = 1, blk5 = 1;
r17658r17659
250250         break;
251251
252252      case COLOR:
253         m_color_ram[offset & 0x3ff] = data;
253         m_color_ram[offset & 0x3ff] = data & 0x0f;
254254         break;
255255
256256      case IO2: io2 = 0; break;
r17658r17659
270270//  VIDEO
271271//**************************************************************************
272272
273static const unsigned char mos6560_palette[] =
274{
275// ripped from vice, a very excellent emulator
276// black, white, red, cyan
277   0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0xf0,
278// purple, green, blue, yellow
279   0x60, 0x00, 0x60, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xf0, 0xd0, 0xd0, 0x00,
280// orange, light orange, pink, light cyan,
281   0xc0, 0xa0, 0x00, 0xff, 0xa0, 0x00, 0xf0, 0x80, 0x80, 0x00, 0xff, 0xff,
282// light violett, light green, light blue, light yellow
283   0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0xa0, 0xff, 0xff, 0xff, 0x00
284};
285
286static PALETTE_INIT( vic20 )
287{
288   int i;
289
290   for (i = 0; i < sizeof(mos6560_palette) / 3; i++)
291   {
292      palette_set_color_rgb(machine, i, mos6560_palette[i * 3], mos6560_palette[i * 3 + 1], mos6560_palette[i * 3 + 2]);
293   }
294}
295
296static SCREEN_UPDATE_IND16( vic20 )
297{
298   vic20_state *state = screen.machine().driver_data<vic20_state>();
299   mos6560_video_update(state->m_vic, bitmap, cliprect);
300   return 0;
301}
302
303273static INTERRUPT_GEN( vic20_raster_interrupt )
304274{
305275   vic20_state *state = device->machine().driver_data<vic20_state>();
r17658r17659
644614#define VC20ADDR2MOS6560ADDR(a) (((a) > 0x8000) ? ((a) & 0x1fff) : ((a) | 0x2000))
645615#define MOS6560ADDR2VC20ADDR(a) (((a) > 0x2000) ? ((a) & 0x1fff) : ((a) | 0x8000))
646616
647static int vic20_dma_read_color( running_machine &machine, int offset )
617READ8_MEMBER( vic20_state::vic_dma_read_color )
648618{
649   vic20_state *state = machine.driver_data<vic20_state>();
650
651   return state->m_color_ram[offset & 0x3ff];
619   return m_color_ram[offset & 0x3ff];
652620}
653621
654static int vic20_dma_read( running_machine &machine, int offset )
622READ8_MEMBER( vic20_state::vic_dma_read )
655623{
656   address_space *program = machine.device(M6502_TAG)->memory().space(AS_PROGRAM);
624   address_space *program = m_maincpu->memory().space(AS_PROGRAM);
657625
658626   return program->read_byte(MOS6560ADDR2VC20ADDR(offset));
659627}
660628
661static UINT8 vic20_lightx_cb( running_machine &machine )
629READ8_MEMBER( vic20_state::vic_lightx_cb )
662630{
663   return (machine.root_device().ioport("LIGHTX")->read_safe(0) & ~0x01);
631   return (ioport("LIGHTX")->read_safe(0) & ~0x01);
664632}
665633
666static UINT8 vic20_lighty_cb( running_machine &machine )
634READ8_MEMBER( vic20_state::vic_lighty_cb )
667635{
668   return (machine.root_device().ioport("LIGHTY")->read_safe(0) & ~0x01);
636   return (ioport("LIGHTY")->read_safe(0) & ~0x01);
669637}
670638
671static UINT8 vic20_lightbut_cb( running_machine &machine )
639READ8_MEMBER( vic20_state::vic_lightbut_cb )
672640{
673   return (((machine.root_device().ioport("CTRLSEL")->read() & 0xf0) == 0x20) && (machine.root_device().ioport("JOY")->read() & 0x40));
641   return (((ioport("CTRLSEL")->read() & 0xf0) == 0x20) && (ioport("JOY")->read() & 0x40));
674642}
675643
676static UINT8 vic20_paddle0_cb( running_machine &machine )
677{
678   return machine.root_device().ioport("PADDLE0")->read();
679}
680
681static UINT8 vic20_paddle1_cb( running_machine &machine )
682{
683   return machine.root_device().ioport("PADDLE1")->read();
684}
685
686644static const mos6560_interface vic_ntsc_intf =
687645{
688646   SCREEN_TAG,
689647   MOS6560,
690   vic20_lightx_cb, vic20_lighty_cb, vic20_lightbut_cb,   // lightgun cb
691   vic20_paddle0_cb, vic20_paddle1_cb,      // paddle cb
692   vic20_dma_read, vic20_dma_read_color   // DMA
648   DEVCB_DRIVER_MEMBER(vic20_state, vic_lightx_cb),
649   DEVCB_DRIVER_MEMBER(vic20_state, vic_lighty_cb),
650   DEVCB_DRIVER_MEMBER(vic20_state, vic_lightbut_cb),
651   DEVCB_INPUT_PORT("PADDLE0"),
652   DEVCB_INPUT_PORT("PADDLE1"),
653   DEVCB_DRIVER_MEMBER(vic20_state, vic_dma_read),
654   DEVCB_DRIVER_MEMBER(vic20_state, vic_dma_read_color)
693655};
694656
695657
r17658r17659
701663{
702664   SCREEN_TAG,
703665   MOS6561,
704   vic20_lightx_cb, vic20_lighty_cb, vic20_lightbut_cb,   // lightgun cb
705   vic20_paddle0_cb, vic20_paddle1_cb,      // paddle cb
706   vic20_dma_read, vic20_dma_read_color   // DMA
666   DEVCB_DRIVER_MEMBER(vic20_state, vic_lightx_cb),
667   DEVCB_DRIVER_MEMBER(vic20_state, vic_lighty_cb),
668   DEVCB_DRIVER_MEMBER(vic20_state, vic_lightbut_cb),
669   DEVCB_INPUT_PORT("PADDLE0"),
670   DEVCB_INPUT_PORT("PADDLE1"),
671   DEVCB_DRIVER_MEMBER(vic20_state, vic_dma_read),
672   DEVCB_DRIVER_MEMBER(vic20_state, vic_dma_read_color)
707673};
708674
709675
r17658r17659
820786   MCFG_CPU_PROGRAM_MAP(vic20_mem)
821787   MCFG_CPU_PERIODIC_INT(vic20_raster_interrupt, MOS656X_HRETRACERATE)
822788
823   // video hardware
824   MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
825   MCFG_SCREEN_REFRESH_RATE(MOS6560_VRETRACERATE)
826   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
827   MCFG_SCREEN_SIZE((MOS6560_XSIZE + 7) & ~7, MOS6560_YSIZE)
828   MCFG_SCREEN_VISIBLE_AREA(MOS6560_MAME_XPOS, MOS6560_MAME_XPOS + MOS6560_MAME_XSIZE - 1, MOS6560_MAME_YPOS, MOS6560_MAME_YPOS + MOS6560_MAME_YSIZE - 1)
829   MCFG_SCREEN_UPDATE_STATIC( vic20 )
830
831   MCFG_PALETTE_LENGTH(16)
832   MCFG_PALETTE_INIT( vic20 )
833
834   // sound hardware
789   // video/sound hardware
835790   MCFG_SPEAKER_STANDARD_MONO("mono")
836   MCFG_MOS656X_ADD(M6560_TAG, vic_ntsc_intf)
791   MCFG_MOS6560_ADD(M6560_TAG, SCREEN_TAG, MOS6560_CLOCK, vic_ntsc_intf)
837792   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
838793   MCFG_SOUND_ADD("dac", DAC, 0)
839794   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
r17658r17659
857812   MCFG_CPU_PROGRAM_MAP(vic20_mem)
858813   MCFG_CPU_PERIODIC_INT(vic20_raster_interrupt, MOS656X_HRETRACERATE)
859814
860   // video hardware
861   MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
862   MCFG_SCREEN_REFRESH_RATE(MOS6561_VRETRACERATE)
863   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
864   MCFG_SCREEN_SIZE((MOS6561_XSIZE + 7) & ~7, MOS6561_YSIZE)
865   MCFG_SCREEN_VISIBLE_AREA(MOS6561_MAME_XPOS, MOS6561_MAME_XPOS + MOS6561_MAME_XSIZE - 1, MOS6561_MAME_YPOS, MOS6561_MAME_YPOS + MOS6561_MAME_YSIZE - 1)
866   MCFG_SCREEN_UPDATE_STATIC( vic20 )
867
868   MCFG_PALETTE_LENGTH(16)
869   MCFG_PALETTE_INIT( vic20 )
870
871   // devices
872   MCFG_VIC20_EXPANSION_SLOT_ADD(VIC20_EXPANSION_SLOT_TAG, MOS6561_CLOCK, expansion_intf, vic20_expansion_cards, NULL, NULL)
873
874   // sound hardware
815   // video/sound hardware
875816   MCFG_SPEAKER_STANDARD_MONO("mono")
876   MCFG_MOS656X_ADD(M6560_TAG, vic_pal_intf)
817   MCFG_MOS6561_ADD(M6560_TAG, SCREEN_TAG, MOS6561_CLOCK, vic_pal_intf)
877818   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
878819   MCFG_SOUND_ADD("dac", DAC, 0)
879820   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
880821
822   // devices
823   MCFG_VIC20_EXPANSION_SLOT_ADD(VIC20_EXPANSION_SLOT_TAG, MOS6561_CLOCK, expansion_intf, vic20_expansion_cards, NULL, NULL)
824
881825   // software lists
882826   MCFG_SOFTWARE_LIST_FILTER("cart_list", "PAL")
883827   MCFG_SOFTWARE_LIST_FILTER("disk_list", "PAL")

Previous 199869 Revisions Next


© 1997-2024 The MAME Team