Previous 199869 Revisions Next

r31966 Sunday 7th September, 2014 at 11:39:43 UTC by Fabio Priuli
small progress towards separating antic code from video/atari.c. nw.
[src/mame/includes]atari.h
[src/mame/video]antic.c atari.c

trunk/src/mame/includes/atari.h
r31965r31966
5959   inline void LMS(int new_cmd);
6060   void antic_scanline_dma(int param);
6161   void generic_atari_interrupt(int button_count);
62   
63   int m_antic_render1, m_antic_render2, m_antic_render3;
6264};
6365
6466/* video */
r31965r31966
559561
560562void antic_start(running_machine &machine);
561563void antic_reset(void);
564void antic_render(address_space &space, VIDEO *video, int param1, int param2, int param3);
562565
563566
564#define ANTIC_RENDERER(name) void name(address_space &space, VIDEO *video)
565
566ANTIC_RENDERER( antic_mode_0_xx );
567ANTIC_RENDERER( antic_mode_2_32 );
568ANTIC_RENDERER( antic_mode_2_40 );
569ANTIC_RENDERER( antic_mode_2_48 );
570ANTIC_RENDERER( antic_mode_3_32 );
571ANTIC_RENDERER( antic_mode_3_40 );
572ANTIC_RENDERER( antic_mode_3_48 );
573ANTIC_RENDERER( antic_mode_4_32 );
574ANTIC_RENDERER( antic_mode_4_40 );
575ANTIC_RENDERER( antic_mode_4_48 );
576ANTIC_RENDERER( antic_mode_5_32 );
577ANTIC_RENDERER( antic_mode_5_40 );
578ANTIC_RENDERER( antic_mode_5_48 );
579ANTIC_RENDERER( antic_mode_6_32 );
580ANTIC_RENDERER( antic_mode_6_40 );
581ANTIC_RENDERER( antic_mode_6_48 );
582ANTIC_RENDERER( antic_mode_7_32 );
583ANTIC_RENDERER( antic_mode_7_40 );
584ANTIC_RENDERER( antic_mode_7_48 );
585ANTIC_RENDERER( antic_mode_8_32 );
586ANTIC_RENDERER( antic_mode_8_40 );
587ANTIC_RENDERER( antic_mode_8_48 );
588ANTIC_RENDERER( antic_mode_9_32 );
589ANTIC_RENDERER( antic_mode_9_40 );
590ANTIC_RENDERER( antic_mode_9_48 );
591ANTIC_RENDERER( antic_mode_a_32 );
592ANTIC_RENDERER( antic_mode_a_40 );
593ANTIC_RENDERER( antic_mode_a_48 );
594ANTIC_RENDERER( antic_mode_b_32 );
595ANTIC_RENDERER( antic_mode_b_40 );
596ANTIC_RENDERER( antic_mode_b_48 );
597ANTIC_RENDERER( antic_mode_c_32 );
598ANTIC_RENDERER( antic_mode_c_40 );
599ANTIC_RENDERER( antic_mode_c_48 );
600ANTIC_RENDERER( antic_mode_d_32 );
601ANTIC_RENDERER( antic_mode_d_40 );
602ANTIC_RENDERER( antic_mode_d_48 );
603ANTIC_RENDERER( antic_mode_e_32 );
604ANTIC_RENDERER( antic_mode_e_40 );
605ANTIC_RENDERER( antic_mode_e_48 );
606ANTIC_RENDERER( antic_mode_f_32 );
607ANTIC_RENDERER( antic_mode_f_40 );
608ANTIC_RENDERER( antic_mode_f_48 );
609ANTIC_RENDERER( gtia_mode_1_32 );
610ANTIC_RENDERER( gtia_mode_1_40 );
611ANTIC_RENDERER( gtia_mode_1_48 );
612ANTIC_RENDERER( gtia_mode_2_32 );
613ANTIC_RENDERER( gtia_mode_2_40 );
614ANTIC_RENDERER( gtia_mode_2_48 );
615ANTIC_RENDERER( gtia_mode_3_32 );
616ANTIC_RENDERER( gtia_mode_3_40 );
617ANTIC_RENDERER( gtia_mode_3_48 );
618
619567#endif /* ATARI_H */
trunk/src/mame/video/atari.c
r31965r31966
709709
710710   antic.bitmap = auto_bitmap_ind16_alloc(machine(), machine().first_screen()->width(), machine().first_screen()->height());
711711
712   antic.renderer = antic_mode_0_xx;
712   m_antic_render1 = 0;
713   m_antic_render2 = 0;
714   m_antic_render3 = 0;
713715   antic.cclk_expand = auto_alloc_array(machine(), UINT32, 21 * 256);
714716
715717   antic.pf_21       = &antic.cclk_expand[ 0 * 256];
r31965r31966
10581060}
10591061
10601062
1061static const atari_renderer_func renderer[2][19][5] = {
1062   /*   no playfield    narrow          normal          wide         */
1063   {
1064      {antic_mode_0_xx,antic_mode_0_xx,antic_mode_0_xx,antic_mode_0_xx},
1065      {antic_mode_0_xx,antic_mode_0_xx,antic_mode_0_xx,antic_mode_0_xx},
1066      {antic_mode_0_xx,antic_mode_2_32,antic_mode_2_40,antic_mode_2_48},
1067      {antic_mode_0_xx,antic_mode_3_32,antic_mode_3_40,antic_mode_3_48},
1068      {antic_mode_0_xx,antic_mode_4_32,antic_mode_4_40,antic_mode_4_48},
1069      {antic_mode_0_xx,antic_mode_5_32,antic_mode_5_40,antic_mode_5_48},
1070      {antic_mode_0_xx,antic_mode_6_32,antic_mode_6_40,antic_mode_6_48},
1071      {antic_mode_0_xx,antic_mode_7_32,antic_mode_7_40,antic_mode_7_48},
1072      {antic_mode_0_xx,antic_mode_8_32,antic_mode_8_40,antic_mode_8_48},
1073      {antic_mode_0_xx,antic_mode_9_32,antic_mode_9_40,antic_mode_9_48},
1074      {antic_mode_0_xx,antic_mode_a_32,antic_mode_a_40,antic_mode_a_48},
1075      {antic_mode_0_xx,antic_mode_b_32,antic_mode_b_40,antic_mode_b_48},
1076      {antic_mode_0_xx,antic_mode_c_32,antic_mode_c_40,antic_mode_c_48},
1077      {antic_mode_0_xx,antic_mode_d_32,antic_mode_d_40,antic_mode_d_48},
1078      {antic_mode_0_xx,antic_mode_e_32,antic_mode_e_40,antic_mode_e_48},
1079      {antic_mode_0_xx,antic_mode_f_32,antic_mode_f_40,antic_mode_f_48},
1080      {antic_mode_0_xx, gtia_mode_1_32, gtia_mode_1_40, gtia_mode_1_48},
1081      {antic_mode_0_xx, gtia_mode_2_32, gtia_mode_2_40, gtia_mode_2_48},
1082      {antic_mode_0_xx, gtia_mode_3_32, gtia_mode_3_40, gtia_mode_3_48},
1083   },
1084   /*   with hscrol enabled playfield width is +32 color clocks      */
1085   /*   no playfield    narrow->normal  normal->wide    wide->wide   */
1086   {
1087      {antic_mode_0_xx,antic_mode_0_xx,antic_mode_0_xx,antic_mode_0_xx},
1088      {antic_mode_0_xx,antic_mode_0_xx,antic_mode_0_xx,antic_mode_0_xx},
1089      {antic_mode_0_xx,antic_mode_2_40,antic_mode_2_48,antic_mode_2_48},
1090      {antic_mode_0_xx,antic_mode_3_40,antic_mode_3_48,antic_mode_3_48},
1091      {antic_mode_0_xx,antic_mode_4_40,antic_mode_4_48,antic_mode_4_48},
1092      {antic_mode_0_xx,antic_mode_5_40,antic_mode_5_48,antic_mode_5_48},
1093      {antic_mode_0_xx,antic_mode_6_40,antic_mode_6_48,antic_mode_6_48},
1094      {antic_mode_0_xx,antic_mode_7_40,antic_mode_7_48,antic_mode_7_48},
1095      {antic_mode_0_xx,antic_mode_8_40,antic_mode_8_48,antic_mode_8_48},
1096      {antic_mode_0_xx,antic_mode_9_40,antic_mode_9_48,antic_mode_9_48},
1097      {antic_mode_0_xx,antic_mode_a_40,antic_mode_a_48,antic_mode_a_48},
1098      {antic_mode_0_xx,antic_mode_b_40,antic_mode_b_48,antic_mode_b_48},
1099      {antic_mode_0_xx,antic_mode_c_40,antic_mode_c_48,antic_mode_c_48},
1100      {antic_mode_0_xx,antic_mode_d_40,antic_mode_d_48,antic_mode_d_48},
1101      {antic_mode_0_xx,antic_mode_e_40,antic_mode_e_48,antic_mode_e_48},
1102      {antic_mode_0_xx,antic_mode_f_40,antic_mode_f_48,antic_mode_f_48},
1103      {antic_mode_0_xx, gtia_mode_1_40, gtia_mode_1_48, gtia_mode_1_48},
1104      {antic_mode_0_xx, gtia_mode_2_40, gtia_mode_2_48, gtia_mode_2_48},
1105      {antic_mode_0_xx, gtia_mode_3_40, gtia_mode_3_48, gtia_mode_3_48},
1106   }
1107};
1108
11091063/*****************************************************************************
11101064 *
11111065 *  Antic Line Done
r31965r31966
11631117   VIDEO *video = antic.video[antic.scanline];
11641118   LOG(("           @cycle #%3d render mode $%X lines to go #%d\n", cycle(), (antic.cmd & 0x0f), antic.modelines));
11651119
1166   (*antic.renderer)(space, video);
1120   antic_render(space, video, m_antic_render1, m_antic_render2, m_antic_render3);
11671121
11681122   /* if player/missile graphics is enabled */
11691123   if( antic.scanline < 256 && (antic.w.dmactl & (DMA_PLAYER|DMA_MISSILE)) )
r31965r31966
12641218      {
12651219         if( antic.modelines <= 0 )
12661220         {
1267            int h = 0, w = antic.w.dmactl & 3;
1221            m_antic_render1 = 0;
1222            m_antic_render3 = antic.w.dmactl & 3;
12681223            UINT8 vscrol_subtract = 0;
12691224            UINT8 new_cmd;
12701225
r31965r31966
12951250               /* does this command have horizontal scroll enabled ? */
12961251               if( new_cmd & ANTIC_HSCR )
12971252               {
1298                  h = 1;
1253                  m_antic_render1 = 1;
12991254                  antic.hscrol_old = antic.w.hscrol;
13001255               }
13011256               else
r31965r31966
13041259               }
13051260            }
13061261            /* Set the ANTIC mode renderer function */
1307            antic.renderer = renderer[h][new_cmd & ANTIC_MODE][w];
1262            m_antic_render2 = new_cmd & ANTIC_MODE;
13081263
13091264            switch( new_cmd & ANTIC_MODE )
13101265            {
r31965r31966
14311386               switch (m_gtia->get_w_prior() >> 6)
14321387               {
14331388                  case 0: break;
1434                  case 1: antic.renderer = renderer[h][16][w];  break;
1435                  case 2: antic.renderer = renderer[h][17][w];  break;
1436                  case 3: antic.renderer = renderer[h][18][w];  break;
1389                  case 1: m_antic_render2 = 16;  break;
1390                  case 2: m_antic_render2 = 17;  break;
1391                  case 3: m_antic_render2 = 18;  break;
14371392               }
14381393               antic.modelines = 1;
14391394               break;
r31965r31966
14461401      {
14471402         LOG(("           out of visible range\n"));
14481403         antic.cmd = 0x00;
1449         antic.renderer = antic_mode_0_xx;
1404         m_antic_render1 = 0;
1405         m_antic_render2 = 0;
1406         m_antic_render3 = 0;
14501407      }
14511408   }
14521409   else
14531410   {
14541411      LOG(("           DMA is off\n"));
14551412      antic.cmd = 0x00;
1456      antic.renderer = antic_mode_0_xx;
1413      m_antic_render1 = 0;
1414      m_antic_render2 = 0;
1415      m_antic_render3 = 0;
14571416   }
14581417
14591418   antic.r.nmist &= ~DLI_NMI;
r31965r31966
14891448
14901449      /* do nothing new for the rest of the frame */
14911450      antic.modelines = machine().first_screen()->height() - VBL_START;
1492      antic.renderer = antic_mode_0_xx;
1493
1451      m_antic_render1 = 0;
1452      m_antic_render2 = 0;
1453      m_antic_render3 = 0;
1454     
14941455      /* if the CPU want's to be interrupted at vertical blank... */
14951456      if( antic.w.nmien & VBL_NMI )
14961457      {
trunk/src/mame/video/antic.c
r31965r31966
1818
1919#define LOG(x)  do { if (VERBOSE) logerror x; } while (0)
2020
21// declaration of renderer functions
22#define ANTIC_RENDERER(name) void name(address_space &space, VIDEO *video)
23
24ANTIC_RENDERER( antic_mode_0_xx );
25ANTIC_RENDERER( antic_mode_2_32 );
26ANTIC_RENDERER( antic_mode_2_40 );
27ANTIC_RENDERER( antic_mode_2_48 );
28ANTIC_RENDERER( antic_mode_3_32 );
29ANTIC_RENDERER( antic_mode_3_40 );
30ANTIC_RENDERER( antic_mode_3_48 );
31ANTIC_RENDERER( antic_mode_4_32 );
32ANTIC_RENDERER( antic_mode_4_40 );
33ANTIC_RENDERER( antic_mode_4_48 );
34ANTIC_RENDERER( antic_mode_5_32 );
35ANTIC_RENDERER( antic_mode_5_40 );
36ANTIC_RENDERER( antic_mode_5_48 );
37ANTIC_RENDERER( antic_mode_6_32 );
38ANTIC_RENDERER( antic_mode_6_40 );
39ANTIC_RENDERER( antic_mode_6_48 );
40ANTIC_RENDERER( antic_mode_7_32 );
41ANTIC_RENDERER( antic_mode_7_40 );
42ANTIC_RENDERER( antic_mode_7_48 );
43ANTIC_RENDERER( antic_mode_8_32 );
44ANTIC_RENDERER( antic_mode_8_40 );
45ANTIC_RENDERER( antic_mode_8_48 );
46ANTIC_RENDERER( antic_mode_9_32 );
47ANTIC_RENDERER( antic_mode_9_40 );
48ANTIC_RENDERER( antic_mode_9_48 );
49ANTIC_RENDERER( antic_mode_a_32 );
50ANTIC_RENDERER( antic_mode_a_40 );
51ANTIC_RENDERER( antic_mode_a_48 );
52ANTIC_RENDERER( antic_mode_b_32 );
53ANTIC_RENDERER( antic_mode_b_40 );
54ANTIC_RENDERER( antic_mode_b_48 );
55ANTIC_RENDERER( antic_mode_c_32 );
56ANTIC_RENDERER( antic_mode_c_40 );
57ANTIC_RENDERER( antic_mode_c_48 );
58ANTIC_RENDERER( antic_mode_d_32 );
59ANTIC_RENDERER( antic_mode_d_40 );
60ANTIC_RENDERER( antic_mode_d_48 );
61ANTIC_RENDERER( antic_mode_e_32 );
62ANTIC_RENDERER( antic_mode_e_40 );
63ANTIC_RENDERER( antic_mode_e_48 );
64ANTIC_RENDERER( antic_mode_f_32 );
65ANTIC_RENDERER( antic_mode_f_40 );
66ANTIC_RENDERER( antic_mode_f_48 );
67ANTIC_RENDERER( gtia_mode_1_32 );
68ANTIC_RENDERER( gtia_mode_1_40 );
69ANTIC_RENDERER( gtia_mode_1_48 );
70ANTIC_RENDERER( gtia_mode_2_32 );
71ANTIC_RENDERER( gtia_mode_2_40 );
72ANTIC_RENDERER( gtia_mode_2_48 );
73ANTIC_RENDERER( gtia_mode_3_32 );
74ANTIC_RENDERER( gtia_mode_3_40 );
75ANTIC_RENDERER( gtia_mode_3_48 );
76
77
2178ANTIC antic;
2279
2380void antic_start(running_machine &machine)
r31965r31966
242299   }
243300}
244301
302
303static const atari_renderer_func renderer[2][19][5] = {
304   /*   no playfield    narrow          normal          wide         */
305   {
306      {antic_mode_0_xx,antic_mode_0_xx,antic_mode_0_xx,antic_mode_0_xx},
307      {antic_mode_0_xx,antic_mode_0_xx,antic_mode_0_xx,antic_mode_0_xx},
308      {antic_mode_0_xx,antic_mode_2_32,antic_mode_2_40,antic_mode_2_48},
309      {antic_mode_0_xx,antic_mode_3_32,antic_mode_3_40,antic_mode_3_48},
310      {antic_mode_0_xx,antic_mode_4_32,antic_mode_4_40,antic_mode_4_48},
311      {antic_mode_0_xx,antic_mode_5_32,antic_mode_5_40,antic_mode_5_48},
312      {antic_mode_0_xx,antic_mode_6_32,antic_mode_6_40,antic_mode_6_48},
313      {antic_mode_0_xx,antic_mode_7_32,antic_mode_7_40,antic_mode_7_48},
314      {antic_mode_0_xx,antic_mode_8_32,antic_mode_8_40,antic_mode_8_48},
315      {antic_mode_0_xx,antic_mode_9_32,antic_mode_9_40,antic_mode_9_48},
316      {antic_mode_0_xx,antic_mode_a_32,antic_mode_a_40,antic_mode_a_48},
317      {antic_mode_0_xx,antic_mode_b_32,antic_mode_b_40,antic_mode_b_48},
318      {antic_mode_0_xx,antic_mode_c_32,antic_mode_c_40,antic_mode_c_48},
319      {antic_mode_0_xx,antic_mode_d_32,antic_mode_d_40,antic_mode_d_48},
320      {antic_mode_0_xx,antic_mode_e_32,antic_mode_e_40,antic_mode_e_48},
321      {antic_mode_0_xx,antic_mode_f_32,antic_mode_f_40,antic_mode_f_48},
322      {antic_mode_0_xx, gtia_mode_1_32, gtia_mode_1_40, gtia_mode_1_48},
323      {antic_mode_0_xx, gtia_mode_2_32, gtia_mode_2_40, gtia_mode_2_48},
324      {antic_mode_0_xx, gtia_mode_3_32, gtia_mode_3_40, gtia_mode_3_48},
325   },
326   /*   with hscrol enabled playfield width is +32 color clocks      */
327   /*   no playfield    narrow->normal  normal->wide    wide->wide   */
328   {
329      {antic_mode_0_xx,antic_mode_0_xx,antic_mode_0_xx,antic_mode_0_xx},
330      {antic_mode_0_xx,antic_mode_0_xx,antic_mode_0_xx,antic_mode_0_xx},
331      {antic_mode_0_xx,antic_mode_2_40,antic_mode_2_48,antic_mode_2_48},
332      {antic_mode_0_xx,antic_mode_3_40,antic_mode_3_48,antic_mode_3_48},
333      {antic_mode_0_xx,antic_mode_4_40,antic_mode_4_48,antic_mode_4_48},
334      {antic_mode_0_xx,antic_mode_5_40,antic_mode_5_48,antic_mode_5_48},
335      {antic_mode_0_xx,antic_mode_6_40,antic_mode_6_48,antic_mode_6_48},
336      {antic_mode_0_xx,antic_mode_7_40,antic_mode_7_48,antic_mode_7_48},
337      {antic_mode_0_xx,antic_mode_8_40,antic_mode_8_48,antic_mode_8_48},
338      {antic_mode_0_xx,antic_mode_9_40,antic_mode_9_48,antic_mode_9_48},
339      {antic_mode_0_xx,antic_mode_a_40,antic_mode_a_48,antic_mode_a_48},
340      {antic_mode_0_xx,antic_mode_b_40,antic_mode_b_48,antic_mode_b_48},
341      {antic_mode_0_xx,antic_mode_c_40,antic_mode_c_48,antic_mode_c_48},
342      {antic_mode_0_xx,antic_mode_d_40,antic_mode_d_48,antic_mode_d_48},
343      {antic_mode_0_xx,antic_mode_e_40,antic_mode_e_48,antic_mode_e_48},
344      {antic_mode_0_xx,antic_mode_f_40,antic_mode_f_48,antic_mode_f_48},
345      {antic_mode_0_xx, gtia_mode_1_40, gtia_mode_1_48, gtia_mode_1_48},
346      {antic_mode_0_xx, gtia_mode_2_40, gtia_mode_2_48, gtia_mode_2_48},
347      {antic_mode_0_xx, gtia_mode_3_40, gtia_mode_3_48, gtia_mode_3_48},
348   }
349};
350
351void antic_render(address_space &space, VIDEO *video, int param1, int param2, int param3)
352{
353   (*renderer[param1][param2][param3])(space, video);
354}
355
245356/*************  ANTIC mode 00: *********************************
246357 * generate 1-8 empty scanlines
247358 ***************************************************************/

Previous 199869 Revisions Next


© 1997-2024 The MAME Team