void sound_emulate_start(void) { #ifdef Z80_EMULATED YM2610_sh_start(); YM2610_sh_reset(); AY8910_reset(); #endif }
/* called after the rom is opened */ void init_neo(char *rom_name) { cpu_68k_init(); neogeo_init(); pd4990a_init(); setup_misc_patch(rom_name); if (conf.sound) { cpu_z80_init(); ogc_init_audio(); streams_sh_start(); YM2610_sh_start(); conf.snd_st_reg_create=1; } cpu_68k_reset(); arcade = (conf.system != SYS_HOME); }
void init_neo(char *rom_name) { cpu_68k_init(); neogeo_init(); pd4990a_init(); setup_misc_patch(rom_name); if (conf.sound) { cpu_z80_init(); init_sdl_audio(); streams_sh_start(); YM2610_sh_start(); SDL_PauseAudio(0); conf.snd_st_reg_create=1; } cpu_68k_reset(); }
void init_sound(void) { if (conf.sound) init_sdl_audio(); #ifdef ENABLE_940T printf("Init all neo"); shared_data->sample_rate = conf.sample_rate; shared_data->z80_cycle = (z80_overclk == 0 ? 73333 : 73333 + (z80_overclk * 73333 / 100.0)); //gp2x_add_job940(JOB940_INITALL); gp2x_add_job940(JOB940_INITALL); wait_busy_940(JOB940_INITALL); printf("The YM2610 have been initialized\n"); #else cpu_z80_init(); //streams_sh_start(); YM2610_sh_start(); #endif if (conf.sound) pause_audio(0); conf.snd_st_reg_create = 1; }
int init_sound_emulators(void) { int i,j; if(change_sample_rate) saStopSoundEmulators(); if (emulators_active) return 0; change_sample_rate = 0; if( SndMachine ){ if( !SndMachine->first ){ saInitVolPan(); /* moved. (hiro-shi) */ SndMachine->first = 1; /* first flag clear */ streams_sh_start(); /* streaming system initialize & start */ for( j = 0; j < SndMachine->control_max; j++ ){ switch( SndMachine->init[j] ){ #if HAS_YM2203 case SOUND_YM2203: i = YM2203_sh_start( SndMachine->intf[j] ); break; #endif #if HAS_YM2151 case SOUND_YM2151S: i = YM2151_sh_start( SndMachine->intf[j] ); break; #endif #if HAS_YM2413 case SOUND_YM2413: i = YM2413_sh_start( SndMachine->intf[j] ); break; #endif #if HAS_YM2151_ALT case SOUND_YM2151J: i = YM2151_sh_start( SndMachine->intf[j] ); break; #endif #if HAS_YM2610 case SOUND_YM2610: i = YM2610_sh_start( SndMachine->intf[j] ); break; #endif #if HAS_YM2610B case SOUND_YM2610B: i = YM2610B_sh_start( SndMachine->intf[j] ); break; #endif #if HAS_MSM5205_BUFF case SOUND_MSM5205_BUFF: i = MSM5205buffer_sh_start( SndMachine->intf[j] ); break; #endif #if HAS_ADPCM case SOUND_M6295: i = OKIM6295_sh_start( SndMachine->intf[j] ); break; #endif #if HAS_AY8910 case SOUND_AY8910: i = AY8910_sh_start( SndMachine->intf[j] ); break; #endif #if HAS_YM3812 case SOUND_YM3812: i = YM3812_sh_start( SndMachine->intf[j] ); break; #endif #if HAS_SMP16 case SOUND_SMP16: i = SMP16buffer_sh_start( SndMachine->intf[j] ); break; #endif #if HAS_M6585 case SOUND_M6585: i = M6585buffer_sh_start( SndMachine->intf[j] ); break; #endif #if HAS_YMZ280B case SOUND_YMZ280B: i = YMZ280B_sh_start( SndMachine->intf[j] ); break; #endif #if HAS_ES5505 case SOUND_ES5505: i = ES5505_sh_start( SndMachine->intf[j] ); break; case SOUND_ES5506: i = ES5506_sh_start( SndMachine->intf[j] ); break; #endif #if HAS_QSOUND case SOUND_QSOUND: i = qsound_sh_start( SndMachine->intf[j] ); break; #endif #if HAS_YMF278B case SOUND_YMF278B: i = YMF278B_sh_start( SndMachine->intf[j] ); break; #endif #if HAS_NAMCO case SOUND_NAMCO: i = namco_sh_start( SndMachine->intf[j] ); break; #endif #if HAS_X1_010 case SOUND_X1_010: i = seta_sh_start( SndMachine->intf[j] ); break; #endif #if HAS_DAC case SOUND_DAC: i = DAC_sh_start( SndMachine->intf[j] ); break; #endif #if HAS_DXSMP case SOUND_DXSMP: i = dxsmp_sh_start( SndMachine->intf[j] ); break; #endif default: i = 1; break; } if( i ){ audio_sample_rate = 0; SndMachine = NULL; printf("emulator init failed\n"); return 1; } } } } emulators_active = 1; return 0; }
bool load_state(char *game,int slot) { char *st_name; // char *st_name_len; char *gngeo_dir=DATA_DIRECTORY"/save/"; #ifdef WORDS_BIGENDIAN Uint8 my_endian=1; #else Uint8 my_endian=0; #endif int i; gzFile *gzf; char string[20]; Uint8 a,num; ST_DATA_TYPE type; void *data; Uint32 len; Uint8 endian; Uint32 rate; st_name=(char*)alloca(strlen(gngeo_dir)+strlen(game)+5); sprintf(st_name,"%s%s.%03d",gngeo_dir,game,slot); if ((gzf=gzopen(st_name,"rb"))==NULL) { printf("%s not found\n",st_name); return false; } memset(string,0,20); gzread(gzf,string,6); if (strcmp(string,"GNGST1")) { printf("%s is not a valid gngeo st file\n",st_name); gzclose(gzf); return false; } gzread(gzf,&endian,1); if (my_endian!=endian) { printf("This save state comme from a different endian architecture.\n" "This is not currently supported :(\n"); return false; } gzread(gzf,&rate,4); swap_buf32_if_need(endian,&rate,1); if (rate==0 && conf.sound) { /* disable sound */ conf.sound=0; SDL_PauseAudio(1); close_sdl_audio(); } else if (rate!=0 && conf.sound==0) { /* enable sound */ conf.sound=1; conf.sample_rate=rate; if (!conf.snd_st_reg_create) { cpu_z80_init(); init_sdl_audio(); streams_sh_start(); YM2610_sh_start(); conf.snd_st_reg_create=1; } else init_sdl_audio(); SDL_PauseAudio(0); } else if (rate!=conf.sample_rate && conf.sound) { conf.sample_rate=rate; close_sdl_audio(); init_sdl_audio(); } gzread(gzf,state_img->pixels,304*224*2); swap_buf16_if_need(endian,state_img->pixels,304*224); while(!gzeof(gzf)) { gzread(gzf,&a,1); /* name size */ memset(string,0,20); gzread(gzf,string,a); /* regname */ gzread(gzf,&num,1); /* regname num */ gzread(gzf,&a,1); /* module id */ gzread(gzf,&len,4); gzread(gzf,&type,1); data=find_data_by_name(a,num,string); if (data) { gzread(gzf,data,len); switch(type) { case REG_UINT16: case REG_INT16: swap_buf16_if_need(endian,data,len>>1); break; case REG_UINT32: case REG_INT32: swap_buf32_if_need(endian,data,len>>2); break; case REG_INT8: case REG_UINT8: /* nothing */ break; } } else { /* unknow reg, ignore it*/ printf("skeeping unknow reg %s\n",string); gzseek(gzf,len,SEEK_CUR); } // /*if (a==ST_68k)*/ printf("LO %02d %20s %02x %08x \n",a,string,num,len/*,*(Uint32*)data*/); }