Fixed POSIRQ line for Winning Run, fixes map indicator in winrun91

This commit is contained in:
angelosa 2017-01-02 01:50:30 +01:00
parent 294efe0d36
commit f533969728
3 changed files with 7 additions and 9 deletions

View File

@ -1872,12 +1872,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(namcos21_state::screen_scanline)
if(m_gpu_intc != nullptr)
{
if(scanline == m_gpu_intc->get_posirq_line()*2)
{
if(scanline == (0xff-m_gpu_intc->get_posirq_line())*2)
m_gpu_intc->pos_irq_trigger();
// TODO: wrong place!
m_screen->update_partial(param);
}
}
}

View File

@ -68,6 +68,7 @@ i960 CPU, needs to write its clip and raster values byteswapped.
#include "emu.h"
#include "video/namco_c116.h"
const device_type NAMCO_C116 = &device_creator<namco_c116_device>;
//-------------------------------------------------
// namco_c116_device -- constructor
@ -158,6 +159,3 @@ WRITE8_MEMBER(namco_c116_device::write)
RAM[color] = data;
palette().set_pen_color(color,m_ram_r[color],m_ram_g[color],m_ram_b[color]);
}
const device_type NAMCO_C116 = &device_creator<namco_c116_device>;

View File

@ -48,6 +48,7 @@ READ16_MEMBER(namcos21_state::winrun_gpu_register_r)
WRITE16_MEMBER(namcos21_state::winrun_gpu_register_w)
{
COMBINE_DATA( &m_winrun_gpu_register[offset] );
m_screen->update_partial(m_screen->vpos());
}
WRITE16_MEMBER(namcos21_state::winrun_gpu_videoram_w)
@ -426,7 +427,10 @@ uint32_t namcos21_state::screen_update_driveyes(screen_device &screen, bitmap_in
void namcos21_state::winrun_bitmap_draw(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
uint8_t *videoram = m_videoram.get();
//printf("%d %d (%d %d) - %04x %04x %04x|%04x %04x\n",cliprect.min_y,cliprect.max_y,m_screen->vpos(),m_gpu_intc->get_posirq_line(),m_winrun_gpu_register[0],m_winrun_gpu_register[2/2],m_winrun_gpu_register[4/2],m_winrun_gpu_register[0xa/2],m_winrun_gpu_register[0xc/2]);
int yscroll = -cliprect.min_y+(int16_t)m_winrun_gpu_register[0x2/2];
int xscroll = 0;//m_winrun_gpu_register[0xc/2] >> 7;
int base = 0x1000+0x100*(m_winrun_color&0xf);
int sx,sy;
for( sy=cliprect.min_y; sy<=cliprect.max_y; sy++ )
@ -435,7 +439,7 @@ void namcos21_state::winrun_bitmap_draw(bitmap_ind16 &bitmap, const rectangle &c
uint16_t *pDest = &bitmap.pix16(sy);
for( sx=cliprect.min_x; sx<=cliprect.max_x; sx++ )
{
int pen = pSource[sx];
int pen = pSource[(sx+xscroll) & 0x1ff];
switch( pen )
{
case 0xff: