mirror of
https://github.com/86Box/86Box.git
synced 2026-02-22 01:25:33 -07:00
Merge pull request #6629 from Domppari/fdd_recalibration_issue_fixed
Fixes FDC/FDD recalibration not working correctly with audio profiles
This commit is contained in:
@@ -1142,7 +1142,7 @@ fdc_write(uint16_t addr, uint8_t val, void *priv)
|
||||
timer_set_delay_u64(&fdc->timer, 1000 * TIMER_USEC);
|
||||
else
|
||||
timer_set_delay_u64(&fdc->timer, 256 * TIMER_USEC);
|
||||
break;
|
||||
break;
|
||||
default:
|
||||
timer_set_delay_u64(&fdc->timer, 256 * TIMER_USEC);
|
||||
break;
|
||||
@@ -1882,13 +1882,17 @@ fdc_callback(void *priv)
|
||||
fdc->st0 = 0x20 | (fdc->params[0] & 3);
|
||||
if (!fdd_track0(drive_num))
|
||||
fdc->st0 |= 0x50;
|
||||
if (fdc->flags & FDC_FLAG_PCJR) {
|
||||
fdc->fintr = 1;
|
||||
fdc->interrupt = -4;
|
||||
} else
|
||||
fdc->interrupt = -3;
|
||||
timer_set_delay_u64(&fdc->timer, 2048 * TIMER_USEC);
|
||||
fdc->stat = 0x10 | (1 << fdc->rw_drive);
|
||||
if (fdd_get_turbo(drive_num)) {
|
||||
if (fdc->flags & FDC_FLAG_PCJR) {
|
||||
fdc->fintr = 1;
|
||||
fdc->interrupt = -4;
|
||||
} else {
|
||||
fdc->interrupt = -3;
|
||||
}
|
||||
timer_set_delay_u64(&fdc->timer, 2048 * TIMER_USEC);
|
||||
}
|
||||
/* Interrupts and callbacks in the fdd callback function (fdc_seek_complete_interrupt) */
|
||||
return;
|
||||
case 0x0d: /*Format track*/
|
||||
if (fdc->format_state == 1) {
|
||||
|
||||
@@ -419,9 +419,9 @@ fdd_seek(int drive, int track_diff)
|
||||
|
||||
fdd_changed[drive] = 0;
|
||||
|
||||
if (fdd[drive].turbo)
|
||||
if (fdd[drive].turbo) {
|
||||
fdd_do_seek(drive, fdd[drive].track);
|
||||
else {
|
||||
} else {
|
||||
/* Trigger appropriate audio for track movements */
|
||||
int actual_track_diff = abs(old_track - fdd[drive].track);
|
||||
if (actual_track_diff > 0) {
|
||||
@@ -429,11 +429,6 @@ fdd_seek(int drive, int track_diff)
|
||||
fdd_audio_play_multi_track_seek(drive, old_track, fdd[drive].track);
|
||||
}
|
||||
|
||||
if (old_track + track_diff < 0) {
|
||||
fdd_do_seek(drive, fdd[drive].track);
|
||||
return;
|
||||
}
|
||||
|
||||
fdd_seek_in_progress[drive] = 1;
|
||||
|
||||
if (!fdd_seek_timer[drive].callback) {
|
||||
|
||||
Reference in New Issue
Block a user