mirror of
https://github.com/holub/mame
synced 2025-10-05 16:50:57 +03:00
Simplified IRQ routine on PC Engine CD
This commit is contained in:
parent
3973d15188
commit
7fba1bbe48
@ -674,15 +674,15 @@ ROM_END
|
||||
#define rom_sgx rom_pce
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
|
||||
CONS( 1987, pce, 0, 0, pce, pce, pce_state, mess_pce, "Nippon Electronic Company", "PC Engine", GAME_IMPERFECT_SOUND)
|
||||
CONS( 1989, tg16, pce, 0, tg16, pce, pce_state, tg16, "Nippon Electronic Company", "TurboGrafx 16", GAME_IMPERFECT_SOUND)
|
||||
CONS( 1989, sgx, pce, 0, sgx, pce, pce_state, sgx, "Nippon Electronic Company", "SuperGrafx", GAME_IMPERFECT_SOUND)
|
||||
CONS( 1987, pce, 0, 0, pce, pce, pce_state, mess_pce, "Nippon Electronic Company", "PC Engine", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND)
|
||||
CONS( 1989, tg16, pce, 0, tg16, pce, pce_state, tg16, "Nippon Electronic Company", "TurboGrafx 16",GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND)
|
||||
CONS( 1989, sgx, pce, 0, sgx, pce, pce_state, sgx, "Nippon Electronic Company", "SuperGrafx",GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND)
|
||||
|
||||
/* Experimental versions of drivers using newer but slower device implementation of the video chips */
|
||||
#define rom_pce_new rom_pce
|
||||
#define rom_tg16_new rom_pce
|
||||
#define rom_sgx_new rom_pce
|
||||
CONS( 1987, pce_new, 0, 0, pce_new, pce, pce_state, mess_pce, "Nippon Electronic Company", "PC Engine", GAME_IMPERFECT_SOUND)
|
||||
CONS( 1989, tg16_new, pce_new, 0, tg16_new, pce, pce_state, tg16, "Nippon Electronic Company", "TurboGrafx 16", GAME_IMPERFECT_SOUND)
|
||||
CONS( 1989, sgx_new, pce_new, 0, sgx_new, pce, pce_state, sgx, "Nippon Electronic Company", "SuperGrafx", GAME_IMPERFECT_SOUND)
|
||||
CONS( 1987, pce_new, 0, 0, pce_new, pce, pce_state, mess_pce, "Nippon Electronic Company", "PC Engine (NEW video core)", GAME_IMPERFECT_SOUND)
|
||||
CONS( 1989, tg16_new, pce_new, 0, tg16_new, pce, pce_state, tg16, "Nippon Electronic Company", "TurboGrafx 16 (NEW video core)", GAME_IMPERFECT_SOUND)
|
||||
CONS( 1989, sgx_new, pce_new, 0, sgx_new, pce, pce_state, sgx, "Nippon Electronic Company", "SuperGrafx (NEW video core)", GAME_IMPERFECT_SOUND)
|
||||
|
||||
|
@ -21,7 +21,7 @@
|
||||
- telerobo: hangs after winning first match;
|
||||
- vlab: doesn't boot (irq issue?)
|
||||
- wariolnd: brightness gets suddently darker during intro.
|
||||
\
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
|
@ -69,6 +69,7 @@ CD Interface Register 0x0f - ADPCM fade in/out register
|
||||
|
||||
#define PCE_CD_IRQ_TRANSFER_READY 0x40
|
||||
#define PCE_CD_IRQ_TRANSFER_DONE 0x20
|
||||
#define PCE_CD_IRQ_BRAM 0x10 /* ??? */
|
||||
#define PCE_CD_IRQ_SAMPLE_FULL_PLAY 0x08
|
||||
#define PCE_CD_IRQ_SAMPLE_HALF_PLAY 0x04
|
||||
|
||||
@ -454,7 +455,7 @@ static void pce_cd_msm5205_int(device_t *device)
|
||||
static void pce_cd_reply_status_byte( pce_state *state, UINT8 status )
|
||||
{
|
||||
pce_cd_t &pce_cd = state->m_cd;
|
||||
logerror("Setting CD in reply_status_byte\n");
|
||||
logerror("Setting CD in reply_status_byte\n");
|
||||
pce_cd.scsi_CD = pce_cd.scsi_IO = pce_cd.scsi_REQ = 1;
|
||||
pce_cd.scsi_MSG = 0;
|
||||
pce_cd.message_after_status = 1;
|
||||
@ -1060,56 +1061,15 @@ static void pce_cd_set_irq_line( running_machine &machine, int num, int state )
|
||||
{
|
||||
pce_state *drvstate = machine.driver_data<pce_state>();
|
||||
pce_cd_t &pce_cd = drvstate->m_cd;
|
||||
switch( num )
|
||||
{
|
||||
case PCE_CD_IRQ_TRANSFER_DONE:
|
||||
if ( state == ASSERT_LINE )
|
||||
{
|
||||
pce_cd.regs[0x03] |= PCE_CD_IRQ_TRANSFER_DONE;
|
||||
}
|
||||
else
|
||||
{
|
||||
pce_cd.regs[0x03] &= ~ PCE_CD_IRQ_TRANSFER_DONE;
|
||||
}
|
||||
break;
|
||||
case PCE_CD_IRQ_TRANSFER_READY:
|
||||
if ( state == ASSERT_LINE )
|
||||
{
|
||||
pce_cd.regs[0x03] |= PCE_CD_IRQ_TRANSFER_READY;
|
||||
}
|
||||
else
|
||||
{
|
||||
pce_cd.regs[0x03] &= ~ PCE_CD_IRQ_TRANSFER_READY;
|
||||
}
|
||||
break;
|
||||
case PCE_CD_IRQ_SAMPLE_FULL_PLAY:
|
||||
if ( state == ASSERT_LINE )
|
||||
{
|
||||
pce_cd.regs[0x03] |= PCE_CD_IRQ_SAMPLE_FULL_PLAY;
|
||||
//printf("x %02x %02x\n",pce_cd.regs[0x02],pce_cd.regs[0x03]);
|
||||
}
|
||||
else
|
||||
{
|
||||
pce_cd.regs[0x03] &= ~ PCE_CD_IRQ_SAMPLE_FULL_PLAY;
|
||||
}
|
||||
break;
|
||||
case PCE_CD_IRQ_SAMPLE_HALF_PLAY:
|
||||
if ( state == ASSERT_LINE )
|
||||
{
|
||||
pce_cd.regs[0x03] |= PCE_CD_IRQ_SAMPLE_HALF_PLAY;
|
||||
//printf("y %02x %02x\n",pce_cd.regs[0x02],pce_cd.regs[0x03]);
|
||||
}
|
||||
else
|
||||
{
|
||||
pce_cd.regs[0x03] &= ~ PCE_CD_IRQ_SAMPLE_HALF_PLAY;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if ( pce_cd.regs[0x02] & pce_cd.regs[0x03] & ( PCE_CD_IRQ_TRANSFER_DONE | PCE_CD_IRQ_TRANSFER_READY | PCE_CD_IRQ_SAMPLE_HALF_PLAY | PCE_CD_IRQ_SAMPLE_FULL_PLAY) )
|
||||
if(state == ASSERT_LINE)
|
||||
pce_cd.regs[0x03] |= num;
|
||||
else
|
||||
pce_cd.regs[0x03] &= ~num;
|
||||
|
||||
if ( pce_cd.regs[0x02] & pce_cd.regs[0x03] & 0x7c )
|
||||
{
|
||||
//printf("IRQ PEND = %02x MASK = %02x IRQ ENABLE %02X\n",pce_cd.regs[0x02] & pce_cd.regs[0x03] & 0x7c,pce_cd.regs[0x02] & 0x7c,pce_cd.regs[0x03] & 0x7c);
|
||||
machine.device("maincpu")->execute().set_input_line(1, ASSERT_LINE );
|
||||
}
|
||||
else
|
||||
|
@ -219,6 +219,7 @@ tg16 // Turbo Grafix-16 NEC 1989-1993
|
||||
sgx // SuperGrafX NEC 1989
|
||||
pcfx // PC-FX NEC 1994
|
||||
pcfxga // PC-FX NEC 199? (PC-FX on a PC ISA Card)
|
||||
//pce_new
|
||||
|
||||
// Arcadia 2001 family
|
||||
advsnha // Advision Home Arcade
|
||||
|
Loading…
Reference in New Issue
Block a user