Previous 199869 Revisions Next

r20024 Thursday 3rd January, 2013 at 02:12:16 UTC by Angelo Salese
Simplified IRQ routine on PC Engine CD
[src/mess]mess.lst
[src/mess/drivers]pce.c vboy.c
[src/mess/machine]pce.c

trunk/src/mess/machine/pce.c
r20023r20024
6969
7070#define PCE_CD_IRQ_TRANSFER_READY      0x40
7171#define PCE_CD_IRQ_TRANSFER_DONE      0x20
72#define PCE_CD_IRQ_BRAM               0x10 /* ??? */
7273#define PCE_CD_IRQ_SAMPLE_FULL_PLAY      0x08
7374#define PCE_CD_IRQ_SAMPLE_HALF_PLAY      0x04
7475
r20023r20024
454455static void pce_cd_reply_status_byte( pce_state *state, UINT8 status )
455456{
456457   pce_cd_t &pce_cd = state->m_cd;
457logerror("Setting CD in reply_status_byte\n");
458   logerror("Setting CD in reply_status_byte\n");
458459   pce_cd.scsi_CD = pce_cd.scsi_IO = pce_cd.scsi_REQ = 1;
459460   pce_cd.scsi_MSG = 0;
460461   pce_cd.message_after_status = 1;
r20023r20024
10601061{
10611062   pce_state *drvstate = machine.driver_data<pce_state>();
10621063   pce_cd_t &pce_cd = drvstate->m_cd;
1063   switch( num )
1064   {
1065   case PCE_CD_IRQ_TRANSFER_DONE:
1066      if ( state == ASSERT_LINE )
1067      {
1068         pce_cd.regs[0x03] |= PCE_CD_IRQ_TRANSFER_DONE;
1069      }
1070      else
1071      {
1072         pce_cd.regs[0x03] &= ~ PCE_CD_IRQ_TRANSFER_DONE;
1073      }
1074      break;
1075   case PCE_CD_IRQ_TRANSFER_READY:
1076      if ( state == ASSERT_LINE )
1077      {
1078         pce_cd.regs[0x03] |= PCE_CD_IRQ_TRANSFER_READY;
1079      }
1080      else
1081      {
1082         pce_cd.regs[0x03] &= ~ PCE_CD_IRQ_TRANSFER_READY;
1083      }
1084      break;
1085   case PCE_CD_IRQ_SAMPLE_FULL_PLAY:
1086      if ( state == ASSERT_LINE )
1087      {
1088         pce_cd.regs[0x03] |= PCE_CD_IRQ_SAMPLE_FULL_PLAY;
1089         //printf("x %02x %02x\n",pce_cd.regs[0x02],pce_cd.regs[0x03]);
1090      }
1091      else
1092      {
1093         pce_cd.regs[0x03] &= ~ PCE_CD_IRQ_SAMPLE_FULL_PLAY;
1094      }
1095      break;
1096   case PCE_CD_IRQ_SAMPLE_HALF_PLAY:
1097      if ( state == ASSERT_LINE )
1098      {
1099         pce_cd.regs[0x03] |= PCE_CD_IRQ_SAMPLE_HALF_PLAY;
1100         //printf("y %02x %02x\n",pce_cd.regs[0x02],pce_cd.regs[0x03]);
1101      }
1102      else
1103      {
1104         pce_cd.regs[0x03] &= ~ PCE_CD_IRQ_SAMPLE_HALF_PLAY;
1105      }
1106      break;
1107   default:
1108      break;
1109   }
11101064
1111   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) )
1065   if(state == ASSERT_LINE)
1066      pce_cd.regs[0x03] |= num;
1067   else
1068      pce_cd.regs[0x03] &= ~num;
1069
1070   if ( pce_cd.regs[0x02] & pce_cd.regs[0x03] & 0x7c )
11121071   {
1072      //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);
11131073      machine.device("maincpu")->execute().set_input_line(1, ASSERT_LINE );
11141074   }
11151075   else
trunk/src/mess/mess.lst
r20023r20024
219219sgx      // SuperGrafX NEC 1989
220220pcfx     // PC-FX NEC 1994
221221pcfxga   // PC-FX NEC 199? (PC-FX on a PC ISA Card)
222//pce_new
222223
223224// Arcadia 2001 family
224225advsnha      // Advision Home Arcade
trunk/src/mess/drivers/pce.c
r20023r20024
674674#define rom_sgx rom_pce
675675
676676/*    YEAR  NAME    PARENT  COMPAT  MACHINE INPUT    INIT   COMPANY  FULLNAME */
677CONS( 1987, pce,    0,      0,      pce,    pce, pce_state,     mess_pce,   "Nippon Electronic Company", "PC Engine", GAME_IMPERFECT_SOUND)
678CONS( 1989, tg16,   pce,    0,      tg16,   pce, pce_state,     tg16,       "Nippon Electronic Company", "TurboGrafx 16", GAME_IMPERFECT_SOUND)
679CONS( 1989, sgx,    pce,    0,      sgx,    pce, pce_state,     sgx,       "Nippon Electronic Company", "SuperGrafx", GAME_IMPERFECT_SOUND)
677CONS( 1987, pce,    0,      0,      pce,    pce, pce_state,     mess_pce,          "Nippon Electronic Company", "PC Engine", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND)
678CONS( 1989, tg16,   pce,    0,      tg16,   pce, pce_state,     tg16,             "Nippon Electronic Company", "TurboGrafx 16",GAME_IMPERFECT_GRAPHICS |  GAME_IMPERFECT_SOUND)
679CONS( 1989, sgx,    pce,    0,      sgx,    pce, pce_state,     sgx,             "Nippon Electronic Company", "SuperGrafx",GAME_IMPERFECT_GRAPHICS |  GAME_IMPERFECT_SOUND)
680680
681681/* Experimental versions of drivers using newer but slower device implementation of the video chips */
682682#define rom_pce_new rom_pce
683683#define rom_tg16_new rom_pce
684684#define rom_sgx_new rom_pce
685CONS( 1987, pce_new,    0,      0,      pce_new,    pce, pce_state,     mess_pce,   "Nippon Electronic Company", "PC Engine", GAME_IMPERFECT_SOUND)
686CONS( 1989, tg16_new,   pce_new,    0,      tg16_new,   pce, pce_state,     tg16,        "Nippon Electronic Company", "TurboGrafx 16", GAME_IMPERFECT_SOUND)
687CONS( 1989, sgx_new,    pce_new,    0,      sgx_new,    pce, pce_state,     sgx,         "Nippon Electronic Company", "SuperGrafx", GAME_IMPERFECT_SOUND)
685CONS( 1987, pce_new,    0,      0,      pce_new,    pce, pce_state,     mess_pce,   "Nippon Electronic Company", "PC Engine (NEW video core)", GAME_IMPERFECT_SOUND)
686CONS( 1989, tg16_new,   pce_new,    0,      tg16_new,   pce, pce_state,     tg16,   "Nippon Electronic Company", "TurboGrafx 16 (NEW video core)", GAME_IMPERFECT_SOUND)
687CONS( 1989, sgx_new,    pce_new,    0,      sgx_new,    pce, pce_state,     sgx,    "Nippon Electronic Company", "SuperGrafx (NEW video core)", GAME_IMPERFECT_SOUND)
688688
trunk/src/mess/drivers/vboy.c
r20023r20024
2121    - telerobo: hangs after winning first match;
2222    - vlab: doesn't boot (irq issue?)
2323    - wariolnd: brightness gets suddently darker during intro.
24\
24
2525****************************************************************************/
2626
2727#include "emu.h"

Previous 199869 Revisions Next


© 1997-2024 The MAME Team