diff --git a/support/saturn/saturn.h b/support/saturn/saturn.h index 33f17e6..b3b2574 100644 --- a/support/saturn/saturn.h +++ b/support/saturn/saturn.h @@ -72,6 +72,7 @@ private: bool stop_pend; bool seek_pend; bool read_pend; + bool final_read; bool seek_ring; bool seek_ring2; bool pause_pend; diff --git a/support/saturn/saturncdd.cpp b/support/saturn/saturncdd.cpp index 63e7f0d..7fa1258 100644 --- a/support/saturn/saturncdd.cpp +++ b/support/saturn/saturncdd.cpp @@ -609,6 +609,7 @@ void satcdd_t::CommandExec() { this->index = this->toc.GetIndexByLBA(this->track, this->seek_lba); this->seek_pend = true; + this->final_read = this->read_pend; this->read_pend = false; this->pause_pend = false; this->speed = comm[10] == 1 ? 1 : 2; @@ -731,7 +732,7 @@ void satcdd_t::Process(uint8_t* time_mode) { #endif // SATURN_DEBUG } else if (this->seek_pend) { - this->state = Seek; + this->state = this->final_read ? Read : Seek; LBAToMSF(this->lba + 150, &amsf); if (this->lba < 0) @@ -757,6 +758,8 @@ void satcdd_t::Process(uint8_t* time_mode) { seek_time = 1; //} + this->final_read = false; + *time_mode = 1;// this->speed; #ifdef SATURN_DEBUG