Port from MESS, nw

This commit is contained in:
Angelo Salese 2011-07-27 18:54:54 +00:00
parent dea70e7f6a
commit 426f43c1ec
4 changed files with 20 additions and 7 deletions

View File

@ -1810,6 +1810,8 @@ static TIMER_DEVICE_CALLBACK( saturn_scanline )
else
state->m_scu.ist |= (IRQ_VBLANK_IN);
video_update_vdp1(timer.machine());
if(!(state->m_scu.ism & IRQ_VDP1_END))
{
device_set_input_line_and_vector(state->m_maincpu, 0x2, HOLD_LINE, 0x4d);
@ -1818,7 +1820,6 @@ static TIMER_DEVICE_CALLBACK( saturn_scanline )
else
state->m_scu.ist |= (IRQ_VDP1_END);
video_update_vdp1(timer.machine());
}
else if((scanline % y_step) == 0 && scanline < vblank_line*y_step)
{

View File

@ -611,7 +611,7 @@ static void cd_writeWord(running_machine &machine, UINT32 addr, UINT16 data)
// CDROM_LOG(("WW CR4: %04x\n", data))
cr4 = data;
if(cr1 != 0 && ((cr1 & 0xff00) != 0x5100) && 1)
printf("CD: command exec %02x %02x %02x %02x %02x (stat %04x)\n", hirqreg, cr1, cr2, cr3, cr4, cd_stat);
printf("CD: command exec %04x %04x %04x %04x %04x (stat %04x)\n", hirqreg, cr1, cr2, cr3, cr4, cd_stat);
if (!cdrom)
{
@ -808,13 +808,18 @@ static void cd_writeWord(running_machine &machine, UINT32 addr, UINT16 data)
}
else // play until the end of the disc
{
UINT32 start_pos;
UINT32 start_pos,end_pos;
start_pos = ((cr1&0xff)<<16) | cr2;
end_pos = ((cr3&0xff)<<16) | cr4;
if(start_pos != 0xffffff)
{
fadstoplay = (cdrom_get_track_start(cdrom, 0xaa)) - cd_curfad;
/* Madou Monogatari sets 0xff80xxxx as end position, needs investigation ... */
if(end_pos & 0x800000)
fadstoplay = end_pos & 0xfffff;
else
fadstoplay = (cdrom_get_track_start(cdrom, 0xaa)) - cd_curfad;
printf("track mode %08x %08x\n",cd_curfad,fadstoplay);
}
else /* Galaxy Fight calls 10ff ffff ffff ffff, resume/restart previously called track */
@ -1285,6 +1290,11 @@ static void cd_writeWord(running_machine &machine, UINT32 addr, UINT16 data)
partitions[bufnum].numblks -= sectnum;
if (freeblocks == 200)
{
sectorstore = 0;
}
cd_stat &= ~CD_STAT_TRANS;
cr_standard_return(cd_stat);
hirqreg |= (CMOK|EHST);

View File

@ -309,6 +309,9 @@ WRITE16_HANDLER( saturn_vdp1_regs_w )
case 0x0a/2:
if ( VDP1_LOG ) logerror( "VDP1: Erase lower-right coord set: %08X\n", data );
break;
case 0x0c/2:
if ( VDP1_LOG ) logerror( "VDP1: Draw forced termination register write: %08X\n", data );
break;
default:
printf("Warning: write to unknown VDP1 reg %08x %08x\n",offset*2,data);
break;

View File

@ -4166,10 +4166,9 @@ static void stv_vdp2_check_tilemap(running_machine &machine, bitmap_t *bitmap, c
}
}
if((STV_VDP2_MZCTL & 0x1f) != 0 && VDP2_ERR(2))
if(STV_VDP2_MZCTL & 0x1f)
{
VDP2_CHK(2);
mame_printf_debug("Mosaic control enabled = %04x\n",STV_VDP2_MZCTL);
printf("Mosaic control enabled = %04x\n",STV_VDP2_MZCTL);
}
}