trunk/src/mess/machine/pce.c
| r20023 | r20024 | |
| 69 | 69 | |
| 70 | 70 | #define PCE_CD_IRQ_TRANSFER_READY 0x40 |
| 71 | 71 | #define PCE_CD_IRQ_TRANSFER_DONE 0x20 |
| 72 | #define PCE_CD_IRQ_BRAM 0x10 /* ??? */ |
| 72 | 73 | #define PCE_CD_IRQ_SAMPLE_FULL_PLAY 0x08 |
| 73 | 74 | #define PCE_CD_IRQ_SAMPLE_HALF_PLAY 0x04 |
| 74 | 75 | |
| r20023 | r20024 | |
| 454 | 455 | static void pce_cd_reply_status_byte( pce_state *state, UINT8 status ) |
| 455 | 456 | { |
| 456 | 457 | pce_cd_t &pce_cd = state->m_cd; |
| 457 | | logerror("Setting CD in reply_status_byte\n"); |
| 458 | logerror("Setting CD in reply_status_byte\n"); |
| 458 | 459 | pce_cd.scsi_CD = pce_cd.scsi_IO = pce_cd.scsi_REQ = 1; |
| 459 | 460 | pce_cd.scsi_MSG = 0; |
| 460 | 461 | pce_cd.message_after_status = 1; |
| r20023 | r20024 | |
| 1060 | 1061 | { |
| 1061 | 1062 | pce_state *drvstate = machine.driver_data<pce_state>(); |
| 1062 | 1063 | 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 | | } |
| 1110 | 1064 | |
| 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 ) |
| 1112 | 1071 | { |
| 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); |
| 1113 | 1073 | machine.device("maincpu")->execute().set_input_line(1, ASSERT_LINE ); |
| 1114 | 1074 | } |
| 1115 | 1075 | else |
trunk/src/mess/drivers/pce.c
| r20023 | r20024 | |
| 674 | 674 | #define rom_sgx rom_pce |
| 675 | 675 | |
| 676 | 676 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ |
| 677 | | CONS( 1987, pce, 0, 0, pce, pce, pce_state, mess_pce, "Nippon Electronic Company", "PC Engine", GAME_IMPERFECT_SOUND) |
| 678 | | CONS( 1989, tg16, pce, 0, tg16, pce, pce_state, tg16, "Nippon Electronic Company", "TurboGrafx 16", GAME_IMPERFECT_SOUND) |
| 679 | | CONS( 1989, sgx, pce, 0, sgx, pce, pce_state, sgx, "Nippon Electronic Company", "SuperGrafx", GAME_IMPERFECT_SOUND) |
| 677 | CONS( 1987, pce, 0, 0, pce, pce, pce_state, mess_pce, "Nippon Electronic Company", "PC Engine", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND) |
| 678 | CONS( 1989, tg16, pce, 0, tg16, pce, pce_state, tg16, "Nippon Electronic Company", "TurboGrafx 16",GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND) |
| 679 | CONS( 1989, sgx, pce, 0, sgx, pce, pce_state, sgx, "Nippon Electronic Company", "SuperGrafx",GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND) |
| 680 | 680 | |
| 681 | 681 | /* Experimental versions of drivers using newer but slower device implementation of the video chips */ |
| 682 | 682 | #define rom_pce_new rom_pce |
| 683 | 683 | #define rom_tg16_new rom_pce |
| 684 | 684 | #define rom_sgx_new rom_pce |
| 685 | | CONS( 1987, pce_new, 0, 0, pce_new, pce, pce_state, mess_pce, "Nippon Electronic Company", "PC Engine", GAME_IMPERFECT_SOUND) |
| 686 | | CONS( 1989, tg16_new, pce_new, 0, tg16_new, pce, pce_state, tg16, "Nippon Electronic Company", "TurboGrafx 16", GAME_IMPERFECT_SOUND) |
| 687 | | CONS( 1989, sgx_new, pce_new, 0, sgx_new, pce, pce_state, sgx, "Nippon Electronic Company", "SuperGrafx", GAME_IMPERFECT_SOUND) |
| 685 | CONS( 1987, pce_new, 0, 0, pce_new, pce, pce_state, mess_pce, "Nippon Electronic Company", "PC Engine (NEW video core)", GAME_IMPERFECT_SOUND) |
| 686 | CONS( 1989, tg16_new, pce_new, 0, tg16_new, pce, pce_state, tg16, "Nippon Electronic Company", "TurboGrafx 16 (NEW video core)", GAME_IMPERFECT_SOUND) |
| 687 | CONS( 1989, sgx_new, pce_new, 0, sgx_new, pce, pce_state, sgx, "Nippon Electronic Company", "SuperGrafx (NEW video core)", GAME_IMPERFECT_SOUND) |
| 688 | 688 | |