static void *ym2203_start(int sndindex, int clock, const void *config) { static const struct YM2203interface generic_2203 = { 0 }; const struct YM2203interface *intf = config ? config : &generic_2203; struct ym2203_info *info; info = auto_malloc(sizeof(*info)); memset(info, 0, sizeof(*info)); info->intf = intf; info->psg = ay8910_start_ym(SOUND_YM2203, sndindex, clock, 3, intf->portAread, intf->portBread, intf->portAwrite, intf->portBwrite); if (!info->psg) return NULL; /* Timer Handler set */ info->timer[0] = timer_alloc_ptr(timer_callback_2203_0, info); info->timer[1] = timer_alloc_ptr(timer_callback_2203_1, info); /* stream system initialize */ info->stream = stream_create(0,1,Machine->sample_rate,info,ym2203_stream_update); /* Initialize FM emurator */ info->chip = YM2203Init(info,sndindex,clock,Machine->sample_rate,TimerHandler,IRQHandler,&psgintf); state_save_register_func_postload_ptr(ym2203_postload, info); if (info->chip) return info; /* error */ /* stream close */ return NULL; }
static void *ym2612_start(int sndindex, int clock, const void *config) { static const struct YM2612interface dummy = { 0 }; int rate = Machine->sample_rate; struct ym2612_info *info; info = auto_malloc(sizeof(*info)); memset(info, 0, sizeof(*info)); info->intf = config ? config : &dummy; /* FM init */ /* Timer Handler set */ info->timer[0] =timer_alloc_ptr(timer_callback_2612_0, info); info->timer[1] =timer_alloc_ptr(timer_callback_2612_1, info); /* stream system initialize */ info->stream = stream_create(0,2,rate,info,ym2612_stream_update); /**** initialize YM2612 ****/ info->chip = YM2612Init(info,sndindex,clock,rate,TimerHandler,IRQHandler); state_save_register_func_postload_ptr(ym2612_postload, info); if (info->chip) return info; /* error */ return NULL; }
void crtc6845_init(void) { crtc6845_state *chip = &crtc6845; int which = 0; state_save_register_func_postload_ptr(crtc6845_state_save_postload, chip); state_save_register_item("crtc6845", which, chip->address_latch); state_save_register_item("crtc6845", which, chip->horiz_total); state_save_register_item("crtc6845", which, chip->horiz_disp); state_save_register_item("crtc6845", which, chip->horiz_sync_pos); state_save_register_item("crtc6845", which, chip->sync_width); state_save_register_item("crtc6845", which, chip->vert_total); state_save_register_item("crtc6845", which, chip->vert_total_adj); state_save_register_item("crtc6845", which, chip->vert_disp); state_save_register_item("crtc6845", which, chip->vert_sync_pos); state_save_register_item("crtc6845", which, chip->intl_skew); state_save_register_item("crtc6845", which, chip->max_ras_addr); state_save_register_item("crtc6845", which, chip->cursor_start_ras); state_save_register_item("crtc6845", which, chip->cursor_end_ras); state_save_register_item("crtc6845", which, chip->start_addr); state_save_register_item("crtc6845", which, chip->cursor); state_save_register_item("crtc6845", which, chip->light_pen); /* do not configure the screen */ chip->intf = 0; chip->has_valid_parameters = FALSE; }
static void *ym2151_start(int sndindex, int clock, const void *config) { static const struct YM2151interface dummy = { 0 }; int rate = Machine->sample_rate; struct ym2151_info *info; info = auto_malloc(sizeof(*info)); memset(info, 0, sizeof(*info)); info->intf = config ? config : &dummy; if( rate == 0 ) rate = 1000; /* kludge to prevent nasty crashes */ rate = clock/64; /* stream setup */ info->stream = stream_create(0,2,rate,info,ym2151_update); info->chip = YM2151Init(sndindex,clock,rate); state_save_register_func_postload_ptr(ym2151_postload, info); if (info->chip != 0) { YM2151SetIrqHandler(info->chip,info->intf->irqhandler); YM2151SetPortWriteHandler(info->chip,info->intf->portwritehandler); return info; } return NULL; }
static void *ym2610_start(int sndindex, int clock, const void *config) { static const struct YM2610interface generic_2610 = { 0 }; const struct YM2610interface *intf = config ? config : &generic_2610; int rate = Machine->sample_rate; void *pcmbufa,*pcmbufb; int pcmsizea,pcmsizeb; struct ym2610_info *info; sound_type = SOUND_YM2610; info = auto_malloc(sizeof(*info)); memset(info, 0, sizeof(*info)); info->intf = intf; info->psg = ay8910_start_ym(SOUND_YM2610, sndindex, clock, 1, NULL, NULL, NULL, NULL); if (!info->psg) return NULL; /* Timer Handler set */ info->timer[0] =timer_alloc_ptr(timer_callback_0, info); info->timer[1] =timer_alloc_ptr(timer_callback_1, info); /* stream system initialize */ info->stream = stream_create(0,2,rate,info,ym2610_stream_update); /* setup adpcm buffers */ pcmbufa = (void *)(memory_region(info->intf->pcmroma)); pcmsizea = memory_region_length(info->intf->pcmroma); pcmbufb = (void *)(memory_region(info->intf->pcmromb)); pcmsizeb = memory_region_length(info->intf->pcmromb); /**** initialize YM2610 ****/ info->chip = YM2610Init(info,sndindex,clock,rate, pcmbufa,pcmsizea,pcmbufb,pcmsizeb, TimerHandler,IRQHandler,&psgintf); state_save_register_func_postload_ptr(ym2610_postload, info); if (info->chip) return info; /* error */ return NULL; }