megavdp: removed another global variable. nw.

This commit is contained in:
Fabio Priuli 2014-03-29 10:05:15 +00:00
parent 70670e3702
commit 8e6f65a7c4
6 changed files with 15 additions and 11 deletions

View File

@ -407,4 +407,3 @@ private:
/* machine/megavdp.c */
extern int megadrive_total_scanlines;
extern int megadrive_vblank_flag;

View File

@ -1017,16 +1017,16 @@ READ16_MEMBER( sega_32x_device::_32x_common_vdp_regs_r )
UINT16 hpos = get_hposition();
int megadrive_hblank_flag = 0;
if (megadrive_vblank_flag) retdata |= 0x8000;
if (m_32x_vblank_flag) retdata |= 0x8000;
if (hpos>400) megadrive_hblank_flag = 1;
if (hpos>460) megadrive_hblank_flag = 0;
if (megadrive_hblank_flag) retdata |= 0x4000;
if (megadrive_vblank_flag) { retdata |= 2; } // framebuffer approval (TODO: condition is unknown at current time)
if (m_32x_vblank_flag) { retdata |= 2; } // framebuffer approval (TODO: condition is unknown at current time)
if (megadrive_hblank_flag && megadrive_vblank_flag) { retdata |= 0x2000; } // palette approval (TODO: active high or low?)
if (megadrive_hblank_flag && m_32x_vblank_flag) { retdata |= 0x2000; } // palette approval (TODO: active high or low?)
return retdata;
}
@ -1597,6 +1597,7 @@ void sega_32x_device::_32x_interrupt_cb(int scanline, int irq6)
{
if (scanline == irq6)
{
m_32x_vblank_flag = 1;
m_sh2_master_vint_pending = 1;
m_sh2_slave_vint_pending = 1;
_32x_check_irqs();

View File

@ -120,6 +120,7 @@ public:
/* our main vblank handler resets this */
int m_32x_hcount_compare_val;
int m_32x_vblank_flag;
int m_sh2_are_running;
int m_32x_240mode;
UINT16 m_32x_a1518a_reg;

View File

@ -1165,8 +1165,11 @@ void md_base_state::screen_eof_megadriv(screen_device &screen, bool state)
m_vdp->vdp_handle_eof();
m_vdp->m_megadriv_scanline_timer->adjust(attotime::zero);
if (m_32x)
if (m_32x)
{
m_32x->m_32x_vblank_flag = 0;
m_32x->m_32x_hcount_compare_val = -1;
}
}
}
}

View File

@ -12,7 +12,6 @@
/* external gunk still has dependencies on these */
int megadrive_total_scanlines;
int megadrive_vblank_flag = 0;
const device_type SEGA_GEN_VDP = &device_creator<sega_genesis_vdp_device>;
@ -148,6 +147,7 @@ void sega_genesis_vdp_device::device_start()
save_item(NAME(m_irq6_scanline));
save_item(NAME(m_z80irq_scanline));
save_item(NAME(m_scanline_counter));
save_item(NAME(m_vblank_flag));
m_sprite_renderline = auto_alloc_array(machine(), UINT8, 1024);
m_highpri_renderline = auto_alloc_array(machine(), UINT8, 320);
@ -212,6 +212,7 @@ void sega_genesis_vdp_device::device_reset()
megadrive_irq6_pending = 0;
megadrive_irq4_pending = 0;
m_scanline_counter = 0;
m_vblank_flag = 0;
sega315_5124_device::device_reset();
}
@ -986,7 +987,7 @@ UINT16 sega_genesis_vdp_device::megadriv_vdp_ctrl_port_r()
int megadrive_odd_frame = m_imode_odd_frame^1;
int megadrive_hblank_flag = 0;
int megadrive_dma_active = 0;
int vblank;
int vblank = m_vblank_flag;
int fifo_empty = 1;
int fifo_full = 0;
@ -995,8 +996,6 @@ UINT16 sega_genesis_vdp_device::megadriv_vdp_ctrl_port_r()
if (hpos>400) megadrive_hblank_flag = 1;
if (hpos>460) megadrive_hblank_flag = 0;
vblank = megadrive_vblank_flag;
/* extra case */
if (MEGADRIVE_REG01_DISP_ENABLE==0) vblank = 1;
@ -2623,7 +2622,7 @@ void sega_genesis_vdp_device::vdp_handle_scanline_callback(int scanline)
// mame_printf_debug("x %d",genesis_get_scanline_counter());
irq6_on_timer->adjust(attotime::from_usec(6));
megadrive_irq6_pending = 1;
megadrive_vblank_flag = 1;
m_vblank_flag = 1;
}
@ -2682,7 +2681,7 @@ void sega_genesis_vdp_device::vdp_handle_eof()
rectangle visarea;
int scr_width = 320;
megadrive_vblank_flag = 0;
m_vblank_flag = 0;
//megadrive_irq6_pending = 0; /* NO! (breaks warlock) */
/* Set it to -1 here, so it becomes 0 when the first timer kicks in */

View File

@ -272,6 +272,7 @@ private:
int megadrive_irq6_pending;
int megadrive_irq4_pending;
int m_scanline_counter;
int m_vblank_flag;
int megadrive_imode;