void sound_beeper( int on ) { static int beeper_ampl[] = { 0, AMPL_TAPE, AMPL_BEEPER, AMPL_BEEPER+AMPL_TAPE }; int val; int ampl; if( !sound_enabled ) return; /* Timex machines have no loading noise */ if( tape_is_playing() && ( !settings_current.sound_load || machine_current->timex ) ) on = on & 0x02; ampl = beeper_ampl[on]; val = -beeper_ampl[3] + ampl*2; blip_synth_update( left_beeper_synth, tstates, val ); if( sound_stereo ) { blip_synth_update( right_beeper_synth, tstates, val ); } }
const char* menu_tape_detail( void ) { if( !tape_present() ) return "Not inserted"; if( tape_is_playing() ) return "Playing"; else return "Stopped"; }
void sound_unpause( void ) { /* No sound if fastloading in progress */ if( settings_current.fastload && tape_is_playing() ) return; sound_init( settings_current.sound_device ); }
void loader_detect_loader( void ) { libspectrum_dword tstates_diff = tstates - last_tstates_read; libspectrum_byte b_diff = z80.bc.b.h - last_b_read; last_tstates_read = tstates; last_b_read = z80.bc.b.h; if( settings_current.detect_loader ) { if( tape_is_playing() ) { if( tstates_diff > 1000 || ( b_diff != 1 && b_diff != 0 && b_diff != 0xff ) ) { successive_reads++; if( successive_reads >= 2 ) { tape_stop(); } } else { successive_reads = 0; } } else { if( tstates_diff <= 500 && ( b_diff == 1 || b_diff == 0xff ) ) { successive_reads++; if( successive_reads >= 10 ) { tape_do_play( 1 ); } } else { successive_reads = 0; } } } else { successive_reads = 0; } if( settings_current.accelerate_loader && tape_is_playing() ) check_for_acceleration(); }
void sound_beeper( int on ) { static int beeper_ampl[] = { 0, AMPL_TAPE, AMPL_BEEPER, AMPL_BEEPER+AMPL_TAPE }; int val; if( !sound_enabled ) return; if( tape_is_playing() ) { /* Timex machines have no loading noise */ if( !settings_current.sound_load || machine_current->timex ) on = on & 0x02; } else { /* ULA book says that MIC only isn't enough to drive the speaker as output voltage is below the 1.4v threshold */ if( on == 1 ) on = 0; } val = -beeper_ampl[3] + beeper_ampl[on]*2; blip_synth_update( left_beeper_synth, tstates, val ); if( sound_stereo_ay != SOUND_STEREO_AY_NONE ) blip_synth_update( right_beeper_synth, tstates, val ); }