int device_start_sn764xx(UINT8 ChipID, int clock, int shiftregwidth, int noisetaps, int negate, int stereo, int clockdivider, int freq0) { sn764xx_state *info; int rate; if (ChipID >= MAX_CHIPS) return 0; info = &SN764xxData[ChipID]; /* emulator create */ switch(EMU_CORE) { case EC_MAME: rate = sn76496_start(&info->chip, clock, shiftregwidth, noisetaps, negate, stereo, clockdivider, freq0); sn76496_freq_limiter(clock & 0x3FFFFFFF, clockdivider, SampleRate); break; #ifdef ENABLE_ALL_CORES case EC_MAXIM: rate = SampleRate; info->chip = SN76489_Init(clock, rate); if (info->chip == NULL) return 0; SN76489_Config((SN76489_Context*)info->chip, noisetaps, shiftregwidth, 0); break; #endif } return rate; }
int device_start_sn764xx(void **_info, int EMU_CORE, int clock, int SampleRate, int shiftregwidth, int noisetaps, int negate, int stereo, int clockdivider, int freq0) { sn764xx_state *info; int rate; #ifdef ENABLE_ALL_CORES if (EMU_CORE >= 0x02) EMU_CORE = EC_MAME; #else EMU_CORE = EC_MAME; #endif info = (sn764xx_state*) calloc(1, sizeof(sn764xx_state)); *_info = (void *) info; /* emulator create */ info->EMU_CORE = EMU_CORE; switch(EMU_CORE) { case EC_MAME: rate = sn76496_start(&info->chip, clock, shiftregwidth, noisetaps, negate, stereo, clockdivider, freq0); sn76496_freq_limiter(clock & 0x3FFFFFFF, clockdivider, SampleRate); break; #ifdef ENABLE_ALL_CORES case EC_MAXIM: rate = SampleRate; info->chip = SN76489_Init(clock, rate); if (info->chip == NULL) return 0; SN76489_Config((SN76489_Context*)info->chip, noisetaps, shiftregwidth, 0); break; #endif } return rate; }