diff --git a/include/PSX/Audio/CDDA.hpp b/include/PSX/Audio/CDDA.hpp index 8c6dfecd..4d72dd13 100644 --- a/include/PSX/Audio/CDDA.hpp +++ b/include/PSX/Audio/CDDA.hpp @@ -15,6 +15,6 @@ namespace JabyEngine { TrackList get_tracks(); void play(uint8_t track); - void stop(); + void pause(); } } \ No newline at end of file diff --git a/src/Library/src/Audio/CDDA.cpp b/src/Library/src/Audio/CDDA.cpp index 92b1fc76..ca76bb9c 100644 --- a/src/Library/src/Audio/CDDA.cpp +++ b/src/Library/src/Audio/CDDA.cpp @@ -29,8 +29,9 @@ namespace JabyEngine { CD::Command::send(CD_IO::Command::Play, track); } - void stop() { - + void pause() { + CD::Command::wait_completed(); + CD::Command::send(CD_IO::Command::Pause); } } } \ No newline at end of file diff --git a/src/Tools/cdtypes/src/types/time.rs b/src/Tools/cdtypes/src/types/time.rs index 64cbe363..c818c758 100644 --- a/src/Tools/cdtypes/src/types/time.rs +++ b/src/Tools/cdtypes/src/types/time.rs @@ -70,7 +70,11 @@ impl Time { let minute = (((lba/Time::MAX_SECTORS)/Time::MAX_SECONDS)%Time::MAX_MINUTES) as u8; 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 { format!("min: {}, sec: {}, sector: {}", self.minute, self.second, self.sector) diff --git a/src/Tools/psxcdgen_ex/src/file_writer/bin_cue.rs b/src/Tools/psxcdgen_ex/src/file_writer/bin_cue.rs index 827bde59..b8f2ece2 100644 --- a/src/Tools/psxcdgen_ex/src/file_writer/bin_cue.rs +++ b/src/Tools/psxcdgen_ex/src/file_writer/bin_cue.rs @@ -50,7 +50,16 @@ impl SectorWriter for BinCueWriter { fn cd_da_start(&mut self) -> Result<(), Error> { self.track += 1; 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()}); Ok(()) }