mirror of
https://github.com/JaCzekanski/Avocado.git
synced 2024-05-20 12:57:38 -04:00
cdrom: removed toggleShell, fixed cddaReport
This commit is contained in:
parent
e33cbf5aef
commit
34a0f6560d
|
@ -43,16 +43,17 @@ void CDROM::handleSector() {
|
|||
if (mode.cddaReport) {
|
||||
// Report--> INT1(stat, track, index, mm / amm, ss + 80h / ass, sect / asect, peaklo, peakhi)
|
||||
auto pos = disc::Position::fromLba(readSector);
|
||||
|
||||
int track = disc->getTrackByPosition(pos);
|
||||
|
||||
auto posInTrack = pos - disc->getTrackStart(track);
|
||||
|
||||
postInterrupt(1);
|
||||
writeResponse(stat._reg); // stat
|
||||
writeResponse(bcd::toBcd(track)); // track
|
||||
writeResponse(0x01); // index
|
||||
writeResponse(bcd::toBcd(pos.mm)); // minute (disc)
|
||||
writeResponse(bcd::toBcd(pos.ss)); // second (disc)
|
||||
writeResponse(bcd::toBcd(pos.ff)); // sector (disc)
|
||||
writeResponse(bcd::toBcd(posInTrack.mm)); // minute (disc) <<< invalid
|
||||
writeResponse(bcd::toBcd(posInTrack.ss) | 0x80); // second (disc) <<< invalid
|
||||
writeResponse(bcd::toBcd(posInTrack.ff)); // sector (disc)
|
||||
writeResponse(bcd::toBcd(0)); // peaklo
|
||||
writeResponse(bcd::toBcd(0)); // peakhi
|
||||
|
||||
|
|
|
@ -40,22 +40,15 @@ class CDROM {
|
|||
|
||||
void setShell(bool opened) {
|
||||
shellOpen = opened;
|
||||
if (!shellOpen) {
|
||||
|
||||
setMode(Mode::None);
|
||||
if (opened) {
|
||||
motor = false;
|
||||
}
|
||||
}
|
||||
|
||||
bool getShell() const { return shellOpen; }
|
||||
|
||||
void toggleShell() {
|
||||
if (!shellOpen) {
|
||||
shellOpen = true;
|
||||
setMode(Mode::None);
|
||||
} else {
|
||||
shellOpen = false;
|
||||
}
|
||||
}
|
||||
|
||||
StatusCode() : _reg(0) { shellOpen = true; }
|
||||
};
|
||||
|
||||
|
@ -202,12 +195,13 @@ class CDROM {
|
|||
|
||||
void setShell(bool opened) { stat.setShell(opened); }
|
||||
bool getShell() const { return stat.getShell(); }
|
||||
void toggleShell() { stat.toggleShell(); }
|
||||
void ackMoreData() {
|
||||
postInterrupt(1);
|
||||
writeResponse(stat._reg);
|
||||
}
|
||||
|
||||
bool discPresent() { return stat.getShell() == false && disc; }
|
||||
|
||||
template <class Archive>
|
||||
void serialize(Archive& ar) {
|
||||
ar(status._reg, interruptEnable);
|
||||
|
|
|
@ -128,7 +128,7 @@ void GUI::mainMenu(std::unique_ptr<System>& sys) {
|
|||
|
||||
const char* shellStatus = sys->cdrom->getShell() ? "Close disk tray" : "Open disk tray";
|
||||
if (ImGui::MenuItem(shellStatus, Key(config.hotkeys["close_tray"]).getButton().c_str())) {
|
||||
sys->cdrom->toggleShell();
|
||||
sys->cdrom->setShell(!sys->cdrom->getShell());
|
||||
}
|
||||
|
||||
if (ImGui::MenuItem("Single frame", Key(config.hotkeys["single_frame"]).getButton().c_str())) {
|
||||
|
|
|
@ -234,6 +234,7 @@ int main(int argc, char** argv) {
|
|||
toast("Fastboot");
|
||||
return;
|
||||
} else if (e.action == Event::File::Load::Action::swap) {
|
||||
sys->cdrom->setShell(true);
|
||||
sys->cdrom->disc = std::move(disc);
|
||||
sys->cdrom->setShell(false);
|
||||
|
||||
|
@ -351,7 +352,7 @@ int main(int argc, char** argv) {
|
|||
}
|
||||
}
|
||||
if (button == Key(config.hotkeys["close_tray"])) {
|
||||
sys->cdrom->toggleShell();
|
||||
sys->cdrom->setShell(!sys->cdrom->getShell());
|
||||
toast(fmt::format("Shell {}", sys->cdrom->getShell() ? "open" : "closed"));
|
||||
}
|
||||
if (button == Key(config.hotkeys["quick_save"])) {
|
||||
|
|
|
@ -75,6 +75,7 @@ void loadFile(std::unique_ptr<System>& sys, const std::string& path) {
|
|||
|
||||
std::unique_ptr<disc::Disc> disc = disc::load(path);
|
||||
if (disc) {
|
||||
sys->cdrom->setShell(true);
|
||||
sys->cdrom->disc = std::move(disc);
|
||||
sys->cdrom->setShell(false);
|
||||
toast(fmt::format("{} loaded", filenameExt));
|
||||
|
|
Loading…
Reference in a new issue