Previous 199869 Revisions Next

r24767 Tuesday 6th August, 2013 at 04:05:49 UTC by Aaron Giles
A little more primary_screen removal.
[src/emu/video]polynew.h
[src/mame/drivers]cobra.c deco_mlc.c
[src/mame/includes]namcos2.h
[src/mame/machine]namcos2.c segamsys.c snes.c
[src/mame/video]amiga.c amigaaga.c namcos2.c

trunk/src/emu/video/polynew.h
r24766r24767
120120
121121   // construction/destruction
122122   poly_manager(running_machine &machine, UINT8 flags = 0);
123   poly_manager(screen_device &screen, UINT8 flags = 0);
123124   virtual ~poly_manager();
124125
125126   // getters
126127   running_machine &machine() const { return m_machine; }
128   screen_device &screen() const { assert(m_screen != NULL); return *m_screen; }
127129
128130   // synchronization
129131   void wait(const char *debug_reason = "general");
r24766r24767
247249
248250   // queue management
249251   running_machine &   m_machine;
252   screen_device *      m_screen;
250253   osd_work_queue *    m_queue;                    // work queue
251254
252255   // arrays
r24766r24767
279282template<typename _BaseType, class _ObjectData, int _MaxParams, int _MaxPolys>
280283poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::poly_manager(running_machine &machine, UINT8 flags)
281284   : m_machine(machine),
285      m_screen(NULL),
282286      m_queue(NULL),
283287      m_polygon(machine, *this),
284288      m_object(machine, *this),
r24766r24767
302306}
303307
304308
309template<typename _BaseType, class _ObjectData, int _MaxParams, int _MaxPolys>
310poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::poly_manager(screen_device &screen, UINT8 flags)
311   : m_machine(screen.machine()),
312      m_screen(&screen),
313      m_queue(NULL),
314      m_polygon(screen.machine(), *this),
315      m_object(screen.machine(), *this),
316      m_unit(screen.machine(), *this),
317      m_flags(flags),
318      m_triangles(0),
319      m_quads(0),
320      m_pixels(0)
321{
322#if KEEP_STATISTICS
323   memset(m_conflicts, 0, sizeof(m_conflicts));
324   memset(m_resolved, 0, sizeof(m_resolved));
325#endif
326
327   // create the work queue
328   if (!(flags & POLYFLAG_NO_WORK_QUEUE))
329      m_queue = osd_work_queue_alloc(WORK_QUEUE_FLAG_MULTI | WORK_QUEUE_FLAG_HIGH_FREQ);
330
331   // request a pre-save callback for synchronization
332   machine().save().register_presave(save_prepost_delegate(FUNC(poly_manager::presave), this));
333}
334
335
305336//-------------------------------------------------
306337//  ~poly_manager - destructor
307338//-------------------------------------------------
trunk/src/mame/drivers/deco_mlc.c
r24766r24767
206206
207207TIMER_DEVICE_CALLBACK_MEMBER(deco_mlc_state::interrupt_gen)
208208{
209//  logerror("hit scanline IRQ %d (%08x)\n", machine.primary_screen->vpos(), info.i);
209//  logerror("hit scanline IRQ %d (%08x)\n", m_screen->vpos(), info.i);
210210   m_maincpu->set_input_line(m_mainCpuIsArm ? ARM_IRQ_LINE : 1, HOLD_LINE);
211211}
212212
trunk/src/mame/drivers/cobra.c
r24766r24767
353353class cobra_renderer : public poly_manager<float, cobra_polydata, 8, 10000>
354354{
355355public:
356   cobra_renderer(running_machine &machine)
357      : poly_manager<float, cobra_polydata, 8, 10000>(machine)
356   cobra_renderer(screen_device &screen)
357      : poly_manager<float, cobra_polydata, 8, 10000>(screen)
358358   {
359      m_texture_ram = auto_alloc_array(machine, UINT32, 0x100000);
359      m_texture_ram = auto_alloc_array(machine(), UINT32, 0x100000);
360360
361      m_framebuffer = auto_bitmap_rgb32_alloc(machine, 1024, 1024);
362      m_backbuffer = auto_bitmap_rgb32_alloc(machine, 1024, 1024);
363      m_overlay = auto_bitmap_rgb32_alloc(machine, 1024, 1024);
364      m_zbuffer = auto_bitmap_ind32_alloc(machine, 1024, 1024);
365      m_stencil = auto_bitmap_ind32_alloc(machine, 1024, 1024);
361      m_framebuffer = auto_bitmap_rgb32_alloc(machine(), 1024, 1024);
362      m_backbuffer = auto_bitmap_rgb32_alloc(machine(), 1024, 1024);
363      m_overlay = auto_bitmap_rgb32_alloc(machine(), 1024, 1024);
364      m_zbuffer = auto_bitmap_ind32_alloc(machine(), 1024, 1024);
365      m_stencil = auto_bitmap_ind32_alloc(machine(), 1024, 1024);
366366
367      m_gfx_regmask = auto_alloc_array(machine, UINT32, 0x100);
367      m_gfx_regmask = auto_alloc_array(machine(), UINT32, 0x100);
368368      for (int i=0; i < 0x100; i++)
369369      {
370370         UINT32 mask = 0;
r24766r24767
386386   void draw_point(const rectangle &visarea, vertex_t &v, UINT32 color);
387387   void draw_line(const rectangle &visarea, vertex_t &v1, vertex_t &v2);
388388
389   void gfx_init(running_machine &machine);
389   void gfx_init();
390390   void gfx_exit(running_machine &machine);
391391   void gfx_reset(running_machine &machine);
392392   void gfx_fifo_exec(running_machine &machine);
r24766r24767
999999{
10001000   machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(cobra_state::cobra_video_exit), this));
10011001
1002   m_renderer = auto_alloc(machine(), cobra_renderer(machine()));
1003   m_renderer->gfx_init(machine());
1002   m_renderer = auto_alloc(machine(), cobra_renderer(*m_screen));
1003   m_renderer->gfx_init();
10041004}
10051005
10061006UINT32 cobra_state::screen_update_cobra(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
r24766r24767
20172017   }
20182018}
20192019
2020void cobra_renderer::gfx_init(running_machine &machine)
2020void cobra_renderer::gfx_init()
20212021{
2022   const rectangle& visarea = machine.primary_screen->visible_area();
2022   const rectangle& visarea = screen().visible_area();
20232023
2024   m_gfx_gram = auto_alloc_array(machine, UINT32, 0x40000);
2024   m_gfx_gram = auto_alloc_array(machine(), UINT32, 0x40000);
20252025
2026   m_gfx_register = auto_alloc_array(machine, UINT64, 0x3000);
2026   m_gfx_register = auto_alloc_array(machine(), UINT64, 0x3000);
20272027   m_gfx_register_select = 0;
20282028
20292029   float zvalue = 10000000.0f;
r24766r24767
21342134   {
21352135      case 0x0000:
21362136      {
2137         const rectangle& visarea = machine.primary_screen->visible_area();
2137         const rectangle& visarea = screen().visible_area();
21382138
21392139         copybitmap_trans(*m_framebuffer, *m_backbuffer, 0, 0, 0, 0, visarea, 0);
21402140         m_backbuffer->fill(0xff000000, visarea);
r24766r24767
21552155   if (cobra->m_gfx_fifo_loopback != 0)
21562156      return;
21572157
2158   const rectangle& visarea = machine.primary_screen->visible_area();
2158   const rectangle& visarea = screen().visible_area();
21592159   vertex_t vert[32];
21602160
21612161   cobra_fifo *fifo_in = cobra->m_gfxfifo_in;
trunk/src/mame/machine/snes.c
r24766r24767
11341134   /* Set STAT78 to NTSC or PAL */
11351135   if (ATTOSECONDS_TO_HZ(m_screen->frame_period().attoseconds) >= 59.0f)
11361136      m_ppu.m_stat78 = SNES_NTSC;
1137   else /* if (ATTOSECONDS_TO_HZ(machine.primary_screen->frame_period().attoseconds) == 50.0f) */
1137   else /* if (ATTOSECONDS_TO_HZ(m_screen->frame_period().attoseconds) == 50.0f) */
11381138      m_ppu.m_stat78 = SNES_PAL;
11391139
11401140   // reset does this to these registers
trunk/src/mame/machine/segamsys.c
r24766r24767
11411141   Even though some games set bit 7, it does nothing.
11421142   */
11431143
1144static void end_of_frame(running_machine &machine, struct sms_vdp *chip)
1144static void end_of_frame(screen_device &screen, struct sms_vdp *chip)
11451145{
11461146   UINT8 m1 = (chip->regs[0x1]&0x10)>>4;
11471147   UINT8 m2 = (chip->regs[0x0]&0x02)>>1;
r24766r24767
11541154   {
11551155      rectangle visarea(0, 256-1, 0, sms_mode_table[chip->screen_mode].sms2_height-1);
11561156
1157      if (chip->chip_id==3) machine.primary_screen->configure(256, 256, visarea, HZ_TO_ATTOSECONDS(chip->sms_framerate));
1157      if (chip->chip_id==3) screen.configure(256, 256, visarea, HZ_TO_ATTOSECONDS(chip->sms_framerate));
11581158
11591159   }
11601160   else /* 160x144 */
11611161   {
11621162      rectangle visarea((256-160)/2, (256-160)/2+160-1, (192-144)/2, (192-144)/2+144-1);
11631163
1164      machine.primary_screen->configure(256, 256, visarea, HZ_TO_ATTOSECONDS(chip->sms_framerate));
1164      screen.configure(256, 256, visarea, HZ_TO_ATTOSECONDS(chip->sms_framerate));
11651165   }
11661166
11671167
r24766r24767
11791179   // rising edge
11801180   if (vblank_on)
11811181   {
1182      end_of_frame(screen.machine(), md_sms_vdp);
1182      end_of_frame(screen, md_sms_vdp);
11831183
11841184      // the SMS has a 'RESET' button on the machine, it generates an NMI
11851185      if (screen.machine().root_device().ioport("PAUSE")->read_safe(0x00))
r24766r24767
12451245   // rising edge
12461246   if (vblank_on)
12471247   {
1248      end_of_frame(screen.machine(), vdp1);
1249      end_of_frame(screen.machine(), vdp2);
1248      end_of_frame(screen, vdp1);
1249      end_of_frame(screen, vdp2);
12501250   }
12511251}
12521252
r24766r24767
12551255{
12561256   // rising edge
12571257   if (vblank_on)
1258      end_of_frame(screen.machine(), md_sms_vdp);
1258      end_of_frame(screen, md_sms_vdp);
12591259}
12601260
12611261SCREEN_VBLANK(megatech_bios)
12621262{
12631263   // rising edge
12641264   if (vblank_on)
1265      end_of_frame(screen.machine(), vdp1);
1265      end_of_frame(screen, vdp1);
12661266}
12671267
12681268SCREEN_UPDATE_RGB32(megatech_md_sms)
trunk/src/mame/machine/namcos2.c
r24766r24767
677677   }
678678}
679679
680void namcos2_adjust_posirq_timer( running_machine &machine, int scanline )
680void namcos2_shared_state::adjust_posirq_timer( int scanline )
681681{
682   namcos2_posirq_timer->adjust(machine.primary_screen->time_until_pos(scanline, 80), scanline);
682   namcos2_posirq_timer->adjust(m_screen->time_until_pos(scanline, 80), scanline);
683683}
684684
685685INTERRUPT_GEN_MEMBER(namcos2_shared_state::namcos2_68k_master_vblank)
686686{
687   if (!is_system21()) namcos2_adjust_posirq_timer(machine(), GetPosIRQScanline(machine()));
687   if (!is_system21()) adjust_posirq_timer(GetPosIRQScanline(machine()));
688688   device.execute().set_input_line(namcos2_68k_master_C148[NAMCOS2_C148_VBLANKIRQ], HOLD_LINE);
689689}
690690
691691INTERRUPT_GEN_MEMBER(namcos2_shared_state::namcos2_68k_slave_vblank)
692692{
693   if (!is_system21()) namcos2_adjust_posirq_timer(machine(), GetPosIRQScanline(machine()));
693   if (!is_system21()) adjust_posirq_timer(GetPosIRQScanline(machine()));
694694   device.execute().set_input_line(namcos2_68k_slave_C148[NAMCOS2_C148_VBLANKIRQ], HOLD_LINE);
695695}
696696
r24766r24767
701701   scanline = 0x50+0x89; /* HACK for Winning Run */
702702
703703   //printf( "namcos2_68k_gpu_vblank(%d)\n",namcos2_68k_gpu_C148[NAMCOS2_C148_POSIRQ] );
704   namcos2_adjust_posirq_timer(machine(), scanline);
704   adjust_posirq_timer(scanline);
705705   device.execute().set_input_line(namcos2_68k_gpu_C148[NAMCOS2_C148_VBLANKIRQ], HOLD_LINE);
706706}
707707
trunk/src/mame/includes/namcos2.h
r24766r24767
196196   INTERRUPT_GEN_MEMBER(namcos2_68k_slave_vblank);
197197   INTERRUPT_GEN_MEMBER(namcos2_68k_gpu_vblank);
198198   TIMER_CALLBACK_MEMBER(namcos2_posirq_tick);
199   void adjust_posirq_timer( int scanline );
199200
200201   DECLARE_WRITE8_MEMBER( namcos2_68k_eeprom_w );
201202   DECLARE_READ8_MEMBER( namcos2_68k_eeprom_r );
r24766r24767
366367#define NAMCOS2_C148_SERIRQ     6       /* 0x1cc000 */
367368#define NAMCOS2_C148_VBLANKIRQ  7       /* 0x1ce000 */
368369
369void namcos2_adjust_posirq_timer( running_machine &machine, int scanline );
370
371370/**************************************************************/
372371/* MASTER CPU RAM MEMORY                                      */
373372/**************************************************************/
trunk/src/mame/video/amiga.c
r24766r24767
943943   }
944944
945945#if 0
946   if ( machine.primary_screen->frame_number() % 64 == 0 && scanline == 100 )
946   if ( m_screen->frame_number() % 64 == 0 && scanline == 100 )
947947   {
948948      const char *m_lores = "LORES";
949949      const char *m_hires = "HIRES";
r24766r24767
980980   CUSTOM_REG(REG_COLOR00) = save_color0;
981981
982982#if GUESS_COPPER_OFFSET
983   if (machine.primary_screen->frame_number() % 64 == 0 && scanline == 0)
983   if (m_screen->frame_number() % 64 == 0 && scanline == 0)
984984   {
985985      if (machine.input().code_pressed(KEYCODE_Q))
986986         popmessage("%d", state->m_wait_offset -= 1);
trunk/src/mame/video/namcos2.c
r24766r24767
347347         /*case 0x180a:*/ case 0x180b:
348348            if (data^m_paletteram[offset]) {
349349               m_paletteram[offset] = data;
350               namcos2_adjust_posirq_timer(machine(),get_pos_irq_scanline());
350               adjust_posirq_timer(get_pos_irq_scanline());
351351            }
352352            break;
353353
trunk/src/mame/video/amigaaga.c
r24766r24767
802802   }
803803
804804#if 0
805   if ( machine.primary_screen->frame_number() % 16 == 0 && scanline == 250 )
805   if ( m_screen->frame_number() % 16 == 0 && scanline == 250 )
806806   {
807807      const char *m_lores = "LORES";
808808      const char *m_hires = "HIRES";
r24766r24767
840840   CUSTOM_REG(REG_COLOR00) = save_color0;
841841
842842#if GUESS_COPPER_OFFSET
843   if (machine.primary_screen->frame_number() % 64 == 0 && scanline == 0)
843   if (m_screen->frame_number() % 64 == 0 && scanline == 0)
844844   {
845845      if (machine.input().code_pressed(KEYCODE_Q))
846846         popmessage("%d", wait_offset -= 1);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team