Improve CDDA track list
This commit is contained in:
parent
a7876ac2a6
commit
6301eb211f
|
@ -15,6 +15,6 @@ namespace JabyEngine {
|
||||||
TrackList get_tracks();
|
TrackList get_tracks();
|
||||||
|
|
||||||
void play(uint8_t track);
|
void play(uint8_t track);
|
||||||
void stop();
|
void pause();
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -29,8 +29,9 @@ namespace JabyEngine {
|
||||||
CD::Command::send<CD_IO::PortIndex0>(CD_IO::Command::Play, track);
|
CD::Command::send<CD_IO::PortIndex0>(CD_IO::Command::Play, track);
|
||||||
}
|
}
|
||||||
|
|
||||||
void stop() {
|
void pause() {
|
||||||
|
CD::Command::wait_completed();
|
||||||
|
CD::Command::send<CD_IO::PortIndex0>(CD_IO::Command::Pause);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -70,7 +70,11 @@ impl Time {
|
||||||
let minute = (((lba/Time::MAX_SECTORS)/Time::MAX_SECONDS)%Time::MAX_MINUTES) as u8;
|
let minute = (((lba/Time::MAX_SECTORS)/Time::MAX_SECONDS)%Time::MAX_MINUTES) as u8;
|
||||||
|
|
||||||
Time{sector, second, minute}
|
Time{sector, second, minute}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn as_sectors(&self) -> usize {
|
||||||
|
self.sector as usize + self.second as usize*Self::MAX_SECTORS + self.minute as usize*Self::MAX_SECONDS*Self::MAX_SECTORS
|
||||||
|
}
|
||||||
|
|
||||||
pub fn dump(&self) -> String {
|
pub fn dump(&self) -> String {
|
||||||
format!("min: {}, sec: {}, sector: {}", self.minute, self.second, self.sector)
|
format!("min: {}, sec: {}, sector: {}", self.minute, self.second, self.sector)
|
||||||
|
|
|
@ -50,7 +50,16 @@ impl SectorWriter for BinCueWriter {
|
||||||
fn cd_da_start(&mut self) -> Result<(), Error> {
|
fn cd_da_start(&mut self) -> Result<(), Error> {
|
||||||
self.track += 1;
|
self.track += 1;
|
||||||
self.cue.push(CueSpecifier::Track{number: self.track, data_type: CueDataType::Audio});
|
self.cue.push(CueSpecifier::Track{number: self.track, data_type: CueDataType::Audio});
|
||||||
// Skip pregap because why have one?
|
|
||||||
|
|
||||||
|
if self.track == 2 {
|
||||||
|
self.cue.push(CueSpecifier::PreGap{time: Time::cd_pregap()});
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
|
self.cue.push(CueSpecifier::Index{number: 0, time: self.cd_time.clone()});
|
||||||
|
self.cd_time.add_sectors(Time::cd_pregap().as_sectors())?;
|
||||||
|
}
|
||||||
self.cue.push(CueSpecifier::Index{number: 1, time: self.cd_time.clone()});
|
self.cue.push(CueSpecifier::Index{number: 1, time: self.cd_time.clone()});
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue