mirror of
https://github.com/86Box/86Box.git
synced 2026-02-24 02:18:20 -07:00
Separate audio sample support for each seek 0-79, 79->0.
This commit is contained in:
@@ -390,10 +390,7 @@ fdd_seek(int drive, int track_diff)
|
||||
else {
|
||||
/* Trigger appropriate audio for track movements */
|
||||
int actual_track_diff = abs(old_track - fdd[drive].track);
|
||||
if (actual_track_diff == 1) {
|
||||
/* Single track movement */
|
||||
fdd_audio_play_single_track_step(drive, old_track, fdd[drive].track);
|
||||
} else if (actual_track_diff > 1) {
|
||||
if (actual_track_diff > 0) {
|
||||
/* Multi-track seek */
|
||||
fdd_audio_play_multi_track_seek(drive, old_track, fdd[drive].track);
|
||||
}
|
||||
@@ -413,12 +410,11 @@ fdd_seek(int drive, int track_diff)
|
||||
int is_seek_down = (fdd[drive].track < old_track);
|
||||
|
||||
/* Get seek timings from audio profile configuration with direction awareness */
|
||||
double initial_seek_time = fdd_audio_get_seek_time(drive, 1, actual_track_diff, is_seek_down);
|
||||
double track_seek_time = fdd_audio_get_seek_time(drive, 0, actual_track_diff, is_seek_down);
|
||||
fdd_log("Seek timing for drive %d: initial %.2f µs, per track %.2f µs (%s)\n",
|
||||
drive, initial_seek_time, track_seek_time, is_seek_down ? "DOWN" : "UP");
|
||||
uint64_t seek_time_us = (initial_seek_time + (abs(actual_track_diff) * track_seek_time)) * TIMER_USEC;
|
||||
timer_set_delay_u64(&fdd_seek_timer[drive], seek_time_us);
|
||||
double seek_time_us = fdd_audio_get_seek_time(drive, 1, actual_track_diff, is_seek_down);
|
||||
fdd_log("Seek timing for drive %d: %.2f µs (%s)\n",
|
||||
drive, seek_time_us, is_seek_down ? "DOWN" : "UP");
|
||||
uint64_t seek_delay_us = seek_time_us * TIMER_USEC;
|
||||
timer_set_delay_u64(&fdd_seek_timer[drive], seek_delay_us);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -23,6 +23,9 @@ extern "C" {
|
||||
|
||||
#ifndef DISABLE_FDD_AUDIO
|
||||
|
||||
/* Maximum number of seek samples (for 80-track drives: 1-79 tracks) */
|
||||
#define MAX_SEEK_SAMPLES 79
|
||||
|
||||
/* Audio sample configuration structure */
|
||||
typedef struct {
|
||||
char filename[512];
|
||||
@@ -37,18 +40,9 @@ typedef struct {
|
||||
audio_sample_config_t spindlemotor_start;
|
||||
audio_sample_config_t spindlemotor_loop;
|
||||
audio_sample_config_t spindlemotor_stop;
|
||||
audio_sample_config_t single_track_step;
|
||||
audio_sample_config_t multi_track_seek;
|
||||
audio_sample_config_t single_track_step_down;
|
||||
audio_sample_config_t multi_track_seek_down;
|
||||
int total_tracks;
|
||||
int samples_per_track;
|
||||
double initial_seek_time;
|
||||
double initial_seek_time_pcjr;
|
||||
double track_seek_time;
|
||||
double track_seek_time_pcjr;
|
||||
double initial_seek_down_time;
|
||||
double track_seek_down_time;
|
||||
audio_sample_config_t seek_up[MAX_SEEK_SAMPLES];
|
||||
audio_sample_config_t seek_down[MAX_SEEK_SAMPLES];
|
||||
int total_tracks; /* 40 or 80 */
|
||||
} fdd_audio_profile_config_t;
|
||||
|
||||
#define FDD_AUDIO_PROFILE_MAX 64
|
||||
@@ -89,7 +83,7 @@ extern const fdd_audio_profile_config_t* fdd_audio_get_profile(int id);
|
||||
extern const char* fdd_audio_get_profile_name(int id);
|
||||
extern const char* fdd_audio_get_profile_internal_name(int id);
|
||||
extern int fdd_audio_get_profile_by_internal_name(const char* internal_name);
|
||||
extern double fdd_audio_get_seek_time(int drive, int is_initial, int track_count, int _is_seek_down);
|
||||
extern double fdd_audio_get_seek_time(int drive, int is_initial, int track_count, int is_seek_down);
|
||||
|
||||
#else
|
||||
|
||||
|
||||
Reference in New Issue
Block a user