From 3a31282fe60a460640b6dd1c76f44d8310ff8432 Mon Sep 17 00:00:00 2001
From: Connor McLaughlin <stenzek@gmail.com>
Date: Mon, 30 Mar 2020 00:06:06 +1000
Subject: [PATCH] CDROM: GetTN should return first_track, last_track

Fixes CDDA playback in Street Sk8er, Jellyfish - The Healing Friend,
probably others.
---
 src/common/cd_image.h | 2 ++
 src/core/cdrom.cpp    | 6 +++---
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/common/cd_image.h b/src/common/cd_image.h
index fa7e8ef5c..13e384937 100644
--- a/src/common/cd_image.h
+++ b/src/common/cd_image.h
@@ -173,6 +173,8 @@ public:
   u32 GetTrackCount() const { return static_cast<u32>(m_tracks.size()); }
   LBA GetTrackStartPosition(u8 track) const;
   Position GetTrackStartMSFPosition(u8 track) const;
+  u32 GetFirstTrackNumber() const { return m_tracks.front().track_number; }
+  u32 GetLastTrackNumber() const { return m_tracks.back().track_number; }
 
   // Seek to data LBA.
   bool Seek(LBA lba);
diff --git a/src/core/cdrom.cpp b/src/core/cdrom.cpp
index a7c67a58a..b572cf295 100644
--- a/src/core/cdrom.cpp
+++ b/src/core/cdrom.cpp
@@ -881,8 +881,8 @@ void CDROM::ExecuteCommand()
         m_reader.WaitForReadToComplete();
 
         m_response_fifo.Push(m_secondary_status.bits);
-        m_response_fifo.Push(BinaryToBCD(Truncate8(m_reader.GetMedia()->GetTrackNumber())));
-        m_response_fifo.Push(BinaryToBCD(Truncate8(m_reader.GetMedia()->GetTrackCount())));
+        m_response_fifo.Push(BinaryToBCD(Truncate8(m_reader.GetMedia()->GetFirstTrackNumber())));
+        m_response_fifo.Push(BinaryToBCD(Truncate8(m_reader.GetMedia()->GetLastTrackNumber())));
         SetInterrupt(Interrupt::ACK);
       }
       else
@@ -1396,8 +1396,8 @@ void CDROM::DoSectorRead()
     if (m_play_track_number_bcd == 0)
     {
       // track number was not specified, but we've found the track now
-      Log_DebugPrintf("Setting playing track number to %u", m_play_track_number_bcd);
       m_play_track_number_bcd = subq.track_number_bcd;
+      Log_DebugPrintf("Setting playing track number to %u", m_play_track_number_bcd);
     }
     else if (m_mode.auto_pause && subq.track_number_bcd != m_play_track_number_bcd)
     {