Previous 15994 Revisions Next

r1007 Wednesday 19th September, 2007 at 11:35:06 UTC by Curt Coder
[ATARIST] Added blitter skeleton
[src/mess/drivers]atarist.c
[src/mess/video]atarist.c atarist.h

src/mess/video/atarist.c
r1006r1007
176176   }
177177}
178178
179/* Atari ST */
179/* Atari ST Shifter */
180180
181181READ16_HANDLER( atarist_shifter_base_r )
182182{
r1006r1007
256256   palette_set_color_rgb(Machine, offset, pal3bit(data >> 8), pal3bit(data >> 4), pal3bit(data));
257257}
258258
259/* Atari STe */
259/* Atari STe Shifter */
260260
261261READ16_HANDLER( atariste_shifter_base_low_r )
262262{
r1006r1007
337337   logerror("SHIFTER Pixel Offset %x\n", shifter.pixelofs);
338338}
339339
340/* Atari ST Blitter */
341
342static struct BLITTER
343{
344   UINT16 halftone[16];
345   UINT16 src_inc_x, src_inc_y, dst_inc_x, dst_inc_y;
346   UINT32 src, dst;
347   UINT16 endmask_l, endmask_m, endmask_r;
348   UINT16 x, y;
349   UINT8 hop, lop, ctrl, skew;
350} blitter;
351
352READ16_HANDLER( atarist_blitter_halftone_r )
353{
354   return blitter.halftone[offset];
355}
356
357READ16_HANDLER( atarist_blitter_src_inc_x_r )
358{
359   return blitter.src_inc_x;
360}
361
362READ16_HANDLER( atarist_blitter_src_inc_y_r )
363{
364   return blitter.src_inc_y;
365}
366
367READ16_HANDLER( atarist_blitter_src_r )
368{
369   switch (offset)
370   {
371   case 0:
372      return (blitter.src >> 16) & 0xff;
373   case 1:
374      return blitter.src & 0xfffe;
375   }
376
377   return 0;
378}
379
380READ16_HANDLER( atarist_blitter_end_mask_r )
381{
382   switch (offset)
383   {
384   case 0:
385      return blitter.endmask_l;
386   case 1:
387      return blitter.endmask_m;
388   case 2:
389      return blitter.endmask_r;
390   }
391
392   return 0;
393}
394
395READ16_HANDLER( atarist_blitter_dst_inc_x_r )
396{
397   return blitter.dst_inc_x;
398}
399
400READ16_HANDLER( atarist_blitter_dst_inc_y_r )
401{
402   return blitter.dst_inc_y;
403}
404
405READ16_HANDLER( atarist_blitter_dst_r )
406{
407   switch (offset)
408   {
409   case 0:
410      return (blitter.dst >> 16) & 0xff;
411   case 1:
412      return blitter.dst & 0xfffe;
413   }
414
415   return 0;
416}
417
418READ16_HANDLER( atarist_blitter_count_x_r )
419{
420   return blitter.x;
421}
422
423READ16_HANDLER( atarist_blitter_count_y_r )
424{
425   return blitter.y;
426}
427
428READ16_HANDLER( atarist_blitter_op_r )
429{
430   if (mem_mask == 0xff00)
431   {
432      return blitter.hop;
433   }
434   else
435   {
436      return blitter.lop;
437   }
438}
439
440READ16_HANDLER( atarist_blitter_ctrl_r )
441{
442   if (mem_mask == 0xff00)
443   {
444      return blitter.ctrl;
445   }
446   else
447   {
448      return blitter.skew;
449   }
450}
451
452WRITE16_HANDLER( atarist_blitter_halftone_w )
453{
454   blitter.halftone[offset] = data;
455}
456
457WRITE16_HANDLER( atarist_blitter_src_inc_x_w )
458{
459   blitter.src_inc_x = data;
460}
461
462WRITE16_HANDLER( atarist_blitter_src_inc_y_w )
463{
464   blitter.src_inc_y = data;
465}
466
467WRITE16_HANDLER( atarist_blitter_src_w )
468{
469   switch (offset)
470   {
471   case 0:
472      blitter.src = (data & 0xff) | (blitter.src & 0xfffe);
473   case 1:
474      blitter.src = (blitter.src & 0xff0000) | (data & 0xfffe);
475   }
476}
477
478WRITE16_HANDLER( atarist_blitter_end_mask_w )
479{
480   switch (offset)
481   {
482   case 0:
483      blitter.endmask_l = data;
484   case 1:
485      blitter.endmask_m = data;
486   case 2:
487      blitter.endmask_r = data;
488   }
489}
490
491WRITE16_HANDLER( atarist_blitter_dst_inc_x_w )
492{
493   blitter.dst_inc_x = data;
494}
495
496WRITE16_HANDLER( atarist_blitter_dst_inc_y_w )
497{
498   blitter.dst_inc_y = data;
499}
500
501WRITE16_HANDLER( atarist_blitter_dst_w )
502{
503   switch (offset)
504   {
505   case 0:
506      blitter.dst = (data & 0xff) | (blitter.dst & 0xfffe);
507   case 1:
508      blitter.dst = (blitter.dst & 0xff0000) | (data & 0xfffe);
509   }
510}
511
512WRITE16_HANDLER( atarist_blitter_count_x_w )
513{
514   blitter.x = data;
515}
516
517WRITE16_HANDLER( atarist_blitter_count_y_w )
518{
519   blitter.y = data;
520}
521
522WRITE16_HANDLER( atarist_blitter_op_w )
523{
524   if (mem_mask == 0xff00)
525   {
526      blitter.hop = data >> 8;
527   }
528   else
529   {
530      blitter.lop = data;
531   }
532}
533
534WRITE16_HANDLER( atarist_blitter_ctrl_w )
535{
536   if (mem_mask == 0xff00)
537   {
538      blitter.ctrl = data >> 8;
539   }
540   else
541   {
542      blitter.skew = data;
543   }
544}
545
546/* Video */
547
340548VIDEO_START( atarist )
341549{
342550   atarist_shifter_timer = mame_timer_alloc(atarist_shifter_tick);
r1006r1007
362570   state_save_register_global(shifter.shift);
363571   state_save_register_global(shifter.h);
364572   state_save_register_global(shifter.v);
573
574   state_save_register_global_array(blitter.halftone);
575   state_save_register_global(blitter.src_inc_x);
576   state_save_register_global(blitter.src_inc_y);
577   state_save_register_global(blitter.dst_inc_x);
578   state_save_register_global(blitter.dst_inc_y);
579   state_save_register_global(blitter.src);
580   state_save_register_global(blitter.dst);
581   state_save_register_global(blitter.endmask_l);
582   state_save_register_global(blitter.endmask_m);
583   state_save_register_global(blitter.endmask_r);
584   state_save_register_global(blitter.x);
585   state_save_register_global(blitter.y);
586   state_save_register_global(blitter.hop);
587   state_save_register_global(blitter.lop);
588   state_save_register_global(blitter.ctrl);
589   state_save_register_global(blitter.skew);
590
365591   state_save_register_bitmap("video", 0, "atarist_bitmap", atarist_bitmap);
366592}
367593
src/mess/video/atarist.h
r1006r1007
2828#define ATARIST_VBDEND_NTSC      34
2929#define ATARIST_VBDSTART_NTSC   234
3030
31#define ATARIST_BLITTER_SKEW_NFSR   0x40
32#define ATARIST_BLITTER_SKEW_FXSR   0x80
33
34/* Atari ST Shifter */
35
3136READ16_HANDLER( atarist_shifter_base_r );
32WRITE16_HANDLER( atarist_shifter_base_w );
3337READ16_HANDLER( atarist_shifter_counter_r );
3438READ16_HANDLER( atarist_shifter_sync_r );
39READ16_HANDLER( atarist_shifter_palette_r );
40READ16_HANDLER( atarist_shifter_mode_r );
41
42WRITE16_HANDLER( atarist_shifter_base_w );
3543WRITE16_HANDLER( atarist_shifter_sync_w );
36READ16_HANDLER( atarist_shifter_palette_r );
3744WRITE16_HANDLER( atarist_shifter_palette_w );
38READ16_HANDLER( atarist_shifter_mode_r );
3945WRITE16_HANDLER( atarist_shifter_mode_w );
4046
47/* Atari STe Shifter */
48
4149READ16_HANDLER( atariste_shifter_base_low_r );
50READ16_HANDLER( atariste_shifter_counter_r );
51READ16_HANDLER( atariste_shifter_lineofs_r );
52READ16_HANDLER( atariste_shifter_pixelofs_r );
53READ16_HANDLER( atariste_shifter_palette_r );
54
4255WRITE16_HANDLER( atariste_shifter_base_low_w );
43READ16_HANDLER( atariste_shifter_counter_r );
4456WRITE16_HANDLER( atariste_shifter_counter_w );
45READ16_HANDLER( atariste_shifter_lineofs_r );
4657WRITE16_HANDLER( atariste_shifter_lineofs_w );
47READ16_HANDLER( atariste_shifter_pixelofs_r );
4858WRITE16_HANDLER( atariste_shifter_pixelofs_w );
49READ16_HANDLER( atariste_shifter_palette_r );
5059WRITE16_HANDLER( atariste_shifter_palette_w );
5160
61/* Atari ST Blitter */
62
63READ16_HANDLER( atarist_blitter_halftone_r );
64READ16_HANDLER( atarist_blitter_src_inc_x_r );
65READ16_HANDLER( atarist_blitter_src_inc_y_r );
66READ16_HANDLER( atarist_blitter_src_r );
67READ16_HANDLER( atarist_blitter_end_mask_r );
68READ16_HANDLER( atarist_blitter_dst_inc_x_r );
69READ16_HANDLER( atarist_blitter_dst_inc_y_r );
70READ16_HANDLER( atarist_blitter_dst_r );
71READ16_HANDLER( atarist_blitter_count_x_r );
72READ16_HANDLER( atarist_blitter_count_y_r );
73READ16_HANDLER( atarist_blitter_op_r );
74READ16_HANDLER( atarist_blitter_ctrl_r );
75
76WRITE16_HANDLER( atarist_blitter_halftone_w );
77WRITE16_HANDLER( atarist_blitter_src_inc_x_w );
78WRITE16_HANDLER( atarist_blitter_src_inc_y_w );
79WRITE16_HANDLER( atarist_blitter_src_w );
80WRITE16_HANDLER( atarist_blitter_end_mask_w );
81WRITE16_HANDLER( atarist_blitter_dst_inc_x_w );
82WRITE16_HANDLER( atarist_blitter_dst_inc_y_w );
83WRITE16_HANDLER( atarist_blitter_dst_w );
84WRITE16_HANDLER( atarist_blitter_count_x_w );
85WRITE16_HANDLER( atarist_blitter_count_y_w );
86WRITE16_HANDLER( atarist_blitter_op_w );
87WRITE16_HANDLER( atarist_blitter_ctrl_w );
88
89/* Video */
90
5291VIDEO_START( atarist );
5392VIDEO_UPDATE( atarist );
5493
src/mess/drivers/atarist.c
r1006r1007
577577   AM_RANGE(0xff8608, 0xff860d) AM_READWRITE(atarist_fdc_dma_base_r, atarist_fdc_dma_base_w)
578578   AM_RANGE(0xff8800, 0xff8801) AM_READWRITE(AY8910_read_port_0_msb_r, AY8910_control_port_0_msb_w)
579579   AM_RANGE(0xff8802, 0xff8803) AM_WRITE(AY8910_write_port_0_msb_w)
580//   AM_RANGE(0xff8a00, 0xff8a3f) AM_READWRITE(atarist_blitter_r, atarist_blitter_w)
580   AM_RANGE(0xff8a00, 0xff8a1f) AM_READWRITE(atarist_blitter_halftone_r, atarist_blitter_halftone_w)
581   AM_RANGE(0xff8a20, 0xff8a21) AM_READWRITE(atarist_blitter_src_inc_x_r, atarist_blitter_src_inc_x_w)
582   AM_RANGE(0xff8a22, 0xff8a23) AM_READWRITE(atarist_blitter_src_inc_y_r, atarist_blitter_src_inc_y_w)
583   AM_RANGE(0xff8a24, 0xff8a27) AM_READWRITE(atarist_blitter_src_r, atarist_blitter_src_w)
584   AM_RANGE(0xff8a28, 0xff8a2d) AM_READWRITE(atarist_blitter_end_mask_r, atarist_blitter_end_mask_w)
585   AM_RANGE(0xff8a2e, 0xff8a2f) AM_READWRITE(atarist_blitter_dst_inc_x_r, atarist_blitter_dst_inc_x_w)
586   AM_RANGE(0xff8a30, 0xff8a31) AM_READWRITE(atarist_blitter_dst_inc_y_r, atarist_blitter_dst_inc_y_w)
587   AM_RANGE(0xff8a32, 0xff8a35) AM_READWRITE(atarist_blitter_dst_r, atarist_blitter_dst_w)
588   AM_RANGE(0xff8a36, 0xff8a37) AM_READWRITE(atarist_blitter_count_x_r, atarist_blitter_count_x_w)
589   AM_RANGE(0xff8a38, 0xff8a39) AM_READWRITE(atarist_blitter_count_y_r, atarist_blitter_count_y_w)
590   AM_RANGE(0xff8a3a, 0xff8a3b) AM_READWRITE(atarist_blitter_op_r, atarist_blitter_op_w)
591   AM_RANGE(0xff8a3c, 0xff8a3d) AM_READWRITE(atarist_blitter_ctrl_r, atarist_blitter_ctrl_w)
581592   AM_RANGE(0xfffa00, 0xfffa3f) AM_READWRITE(mfp68901_0_register_lsb_r, mfp68901_0_register_msb_w)
582593   AM_RANGE(0xfffc00, 0xfffc01) AM_READWRITE(acia6850_0_stat_msb_r, acia6850_0_ctrl_msb_w)
583594   AM_RANGE(0xfffc02, 0xfffc03) AM_READWRITE(acia6850_0_data_msb_r, acia6850_0_data_msb_w)
r1006r1007
614625//   AM_RANGE(0xff8920, 0xff8920) AM_READWRITE(atariste_sound_mode_r, atariste_sound_mode_w)
615626   AM_RANGE(0xff8922, 0xff8923) AM_READWRITE(atariste_microwire_data_r, atariste_microwire_data_w)
616627   AM_RANGE(0xff8924, 0xff8925) AM_READWRITE(atariste_microwire_mask_r, atariste_microwire_mask_w)
617//   AM_RANGE(0xff8a00, 0xff8a3f) AM_READWRITE(atariste_blitter_r, atariste_blitter_w)
628   AM_RANGE(0xff8a00, 0xff8a1f) AM_READWRITE(atarist_blitter_halftone_r, atarist_blitter_halftone_w)
629   AM_RANGE(0xff8a20, 0xff8a21) AM_READWRITE(atarist_blitter_src_inc_x_r, atarist_blitter_src_inc_x_w)
630   AM_RANGE(0xff8a22, 0xff8a23) AM_READWRITE(atarist_blitter_src_inc_y_r, atarist_blitter_src_inc_y_w)
631   AM_RANGE(0xff8a24, 0xff8a27) AM_READWRITE(atarist_blitter_src_r, atarist_blitter_src_w)
632   AM_RANGE(0xff8a28, 0xff8a2d) AM_READWRITE(atarist_blitter_end_mask_r, atarist_blitter_end_mask_w)
633   AM_RANGE(0xff8a2e, 0xff8a2f) AM_READWRITE(atarist_blitter_dst_inc_x_r, atarist_blitter_dst_inc_x_w)
634   AM_RANGE(0xff8a30, 0xff8a31) AM_READWRITE(atarist_blitter_dst_inc_y_r, atarist_blitter_dst_inc_y_w)
635   AM_RANGE(0xff8a32, 0xff8a35) AM_READWRITE(atarist_blitter_dst_r, atarist_blitter_dst_w)
636   AM_RANGE(0xff8a36, 0xff8a37) AM_READWRITE(atarist_blitter_count_x_r, atarist_blitter_count_x_w)
637   AM_RANGE(0xff8a38, 0xff8a39) AM_READWRITE(atarist_blitter_count_y_r, atarist_blitter_count_y_w)
638   AM_RANGE(0xff8a3a, 0xff8a3b) AM_READWRITE(atarist_blitter_op_r, atarist_blitter_op_w)
639   AM_RANGE(0xff8a3c, 0xff8a3d) AM_READWRITE(atarist_blitter_ctrl_r, atarist_blitter_ctrl_w)
618640   AM_RANGE(0xff9200, 0xff9201) AM_READ(port_tag_to_handler16("JOY0"))
619641   AM_RANGE(0xff9202, 0xff9203) AM_READ(port_tag_to_handler16("JOY1"))
620642   AM_RANGE(0xff9210, 0xff9211) AM_READ(port_tag_to_handler16("PADDLE0X"))
r1006r1007
658680//   AM_RANGE(0xff8920, 0xff8920) AM_READWRITE(atariste_sound_mode_r, atariste_sound_mode_w)
659681   AM_RANGE(0xff8922, 0xff8923) AM_READWRITE(atariste_microwire_data_r, atariste_microwire_data_w)
660682   AM_RANGE(0xff8924, 0xff8925) AM_READWRITE(atariste_microwire_mask_r, atariste_microwire_mask_w)
661//   AM_RANGE(0xff8a00, 0xff8a3f) AM_READWRITE(atariste_blitter_r, atariste_blitter_w)
683   AM_RANGE(0xff8a00, 0xff8a1f) AM_READWRITE(atarist_blitter_halftone_r, atarist_blitter_halftone_w)
684   AM_RANGE(0xff8a20, 0xff8a21) AM_READWRITE(atarist_blitter_src_inc_x_r, atarist_blitter_src_inc_x_w)
685   AM_RANGE(0xff8a22, 0xff8a23) AM_READWRITE(atarist_blitter_src_inc_y_r, atarist_blitter_src_inc_y_w)
686   AM_RANGE(0xff8a24, 0xff8a27) AM_READWRITE(atarist_blitter_src_r, atarist_blitter_src_w)
687   AM_RANGE(0xff8a28, 0xff8a2d) AM_READWRITE(atarist_blitter_end_mask_r, atarist_blitter_end_mask_w)
688   AM_RANGE(0xff8a2e, 0xff8a2f) AM_READWRITE(atarist_blitter_dst_inc_x_r, atarist_blitter_dst_inc_x_w)
689   AM_RANGE(0xff8a30, 0xff8a31) AM_READWRITE(atarist_blitter_dst_inc_y_r, atarist_blitter_dst_inc_y_w)
690   AM_RANGE(0xff8a32, 0xff8a35) AM_READWRITE(atarist_blitter_dst_r, atarist_blitter_dst_w)
691   AM_RANGE(0xff8a36, 0xff8a37) AM_READWRITE(atarist_blitter_count_x_r, atarist_blitter_count_x_w)
692   AM_RANGE(0xff8a38, 0xff8a39) AM_READWRITE(atarist_blitter_count_y_r, atarist_blitter_count_y_w)
693   AM_RANGE(0xff8a3a, 0xff8a3b) AM_READWRITE(atarist_blitter_op_r, atarist_blitter_op_w)
694   AM_RANGE(0xff8a3c, 0xff8a3d) AM_READWRITE(atarist_blitter_ctrl_r, atarist_blitter_ctrl_w)
662695//   AM_RANGE(0xff8e20, 0xff8e21) AM_READWRITE(megaste_cache_r, megaste_cache_w)
663696   AM_RANGE(0xfffa00, 0xfffa3f) AM_READWRITE(mfp68901_0_register_lsb_r, mfp68901_0_register_msb_w)
664697//   AM_RANGE(0xfffa40, 0xfffa5f) AM_READWRITE(megaste_fpu_r, megaste_fpu_w)

Previous 15994 Revisions Next


© 1998-2018 The MESS Team