void audio_reset (void) { memset (audio_channel, 0, sizeof audio_channel); audio_channel[0].per = 65535; audio_channel[1].per = 65535; audio_channel[2].per = 65535; audio_channel[3].per = 65535; last_audio_cycles = 0; next_sample_evtime = sample_evtime_interval; audperhack = 0; memset(sound_filter_state, 0, sizeof sound_filter_state); audio_set_resampler(NULL); use_text_scope = 0; }
void uade_handle_r_state(void) { uint8_t space[UADE_MAX_MESSAGE_SIZE]; struct uade_msg *um = (struct uade_msg *) space; int ret; uint32_t x, y; while (1) { ret = uade_receive_message(um, sizeof(space), &uadeipc); if (ret == 0) { fprintf(stderr, "uadecore: No more input. Exiting succesfully.\n"); exit(0); } else if (ret < 0) { fprintf(stderr, "uadecore: Error on input. Exiting with error.\n"); exit(-1); } if (um->msgtype == UADE_COMMAND_TOKEN)break; switch (um->msgtype) { case UADE_EXIT: //uade_reboot = 1; quit_program=1; break; case UADE_COMMAND_ACTIVATE_DEBUGGER: fprintf(stderr, "uadecore: Received activate debugger message.\n"); activate_debugger(); uade_debug = 1; break; case UADE_COMMAND_CHANGE_SUBSONG: if (uade_parse_u32_message(&x, um)) { fprintf(stderr, "uadecore: Invalid size with change subsong.\n"); exit(-1); } change_subsong(x); break; case UADE_COMMAND_FILTER: if (uade_parse_two_u32s_message(&x, &y, um)) { fprintf(stderr, "uadecore: Invalid size with filter command\n"); exit(-1); } audio_set_filter(x, y); break; case UADE_COMMAND_IGNORE_CHECK: /* override bit for sound format checking */ uade_put_long(SCORE_FORCE, 1); break; case UADE_COMMAND_SET_FREQUENCY: if (uade_parse_u32_message(&x, um)) { fprintf(stderr, "Invalid frequency message size: %u\n", um->size); exit(-1); } set_sound_freq(x); break; case UADE_COMMAND_SET_PLAYER_OPTION: uade_check_fix_string(um, 256); add_ep_option((char *) um->data); break; case UADE_COMMAND_SET_RESAMPLING_MODE: uade_check_fix_string(um, 16); audio_set_resampler((char *) um->data); break; case UADE_COMMAND_SPEED_HACK: uade_time_critical = 1; break; case UADE_COMMAND_READ: if (uade_read_size != 0) { fprintf(stderr, "uadecore: Read not allowed when uade_read_size > 0.\n"); exit(-1); } if (uade_parse_u32_message(&x, um)) { fprintf(stderr, "uadecore: Invalid size on read command.\n"); exit(-1); } uade_read_size = x; if (uade_read_size == 0 || uade_read_size > MAX_SOUND_BUF_SIZE || (uade_read_size & 3) != 0) { fprintf(stderr, "uadecore: Invalid read size: %d\n", uade_read_size); exit(-1); } break; case UADE_COMMAND_REBOOT: uade_reboot = 1; break; case UADE_COMMAND_SET_NTSC: fprintf(stderr, "\nuadecore: Changing to NTSC mode.\n"); uade_set_ntsc(1); break; case UADE_COMMAND_SONG_END_NOT_POSSIBLE: uade_set_automatic_song_end(0); break; case UADE_COMMAND_SET_SUBSONG: if (uade_parse_u32_message(&x, um)) { fprintf(stderr, "uadecore: Invalid size on set subsong command.\n"); exit(-1); } uade_put_long(SCORE_SET_SUBSONG, 1); uade_put_long(SCORE_SUBSONG, x); break; case UADE_COMMAND_USE_TEXT_SCOPE: audio_use_text_scope(); break; default: fprintf(stderr, "uadecore: Received invalid command %d\n", um->msgtype); exit(-1); } } }