Previous 199869 Revisions Next

r20400 Tuesday 22nd January, 2013 at 05:19:57 UTC by Angelo Salese
SCSP: Made a more sane Sound->Main IRQ behaviour
[src/emu/sound]scsp.c

trunk/src/emu/sound/scsp.c
r20399r20400
222222
223223   UINT16 dma_regs[3];
224224
225   UINT16 mcieb;
226   UINT16 mcipd;
227
225228   int ARTABLE[64], DRTABLE[64];
226229
227230   SCSPDSP DSP;
r20399r20400
309312   scsp->Int68kCB(scsp->device, 0);
310313}
311314
315static void MainCheckPendingIRQ(scsp_state *scsp, UINT16 irq_type)
316{
317   scsp->mcipd |= irq_type;
318
319   if(scsp->mcipd & scsp->mcieb)
320      scsp->main_irq(1);
321}
322
312323static void ResetInterrupts(scsp_state *scsp)
313324{
314325   UINT32 reset = scsp->udata.data[0x22/2];
r20399r20400
789800            }
790801         }
791802         break;
803      case 0x1e:
804      case 0x1f:
805         if(scsp->Master)
806         {
807            if(scsp->udata.data[0x1e/2] & 0x630)
808               popmessage("SCSP SCIEB enabled %04x, contact MAMEdev",scsp->udata.data[0x1e/2]);
809         }
810         break;
792811      case 0x22:  //SCIRE
793812      case 0x23:
794813
r20399r20400
826845            scsp->IrqMidi=DecodeSCI(scsp,SCIMID);
827846         }
828847         break;
848      case 0x2a:
849      case 0x2b:
850         scsp->mcieb = scsp->udata.data[0x2a/2];
851
852         MainCheckPendingIRQ(scsp, 0);
853         if(scsp->mcieb & ~0x20)
854            popmessage("SCSP MCIEB enabled %04x, contact MAMEdev",scsp->mcieb);
855         break;
856      case 0x2c:
857      case 0x2d:
858         if(scsp->udata.data[0x2c/2] & 0x20)
859            MainCheckPendingIRQ(scsp, 0x20);
860         break;
861      case 0x2e:
862      case 0x2f:
863         scsp->mcipd &= ~scsp->udata.data[0x2e/2];
864         MainCheckPendingIRQ(scsp, 0);
865         break;
866
829867   }
830868}
831869
r20399r20400
878916      case 0x1c:
879917      case 0x1d:
880918         break;
919
920      case 0x2a:
921      case 0x2b:
922         scsp->udata.data[0x2a/2] = scsp->mcieb;
923         break;
924
925      case 0x2c:
926      case 0x2d:
927         scsp->udata.data[0x2c/2] = scsp->mcipd;
928         break;
881929   }
882930}
883931
r20399r20400
13221370         if(ACCESSING_BITS_8_15 && offset*2 == 0x416)
13231371            dma_scsp(space, scsp);
13241372         break;
1325      case 0x42a:     //check main cpu IRQ
1326         scsp->main_irq(1);
1327         break;
1328      case 0x42c:
1329         break;
1330      case 0x42e:
1331         break;
13321373   }
13331374}
13341375

Previous 199869 Revisions Next


© 1997-2024 The MAME Team