DVDInterface: Remove s_disc_inside

There's no point in having a variable for whether there is a disc
when it's simpler to just directly check whether there is a disc.
This commit is contained in:
JosJuice 2016-01-30 18:50:12 +01:00
parent 740e4d0992
commit 900793ef1d
1 changed files with 12 additions and 13 deletions

View File

@ -244,7 +244,6 @@ static u32 s_pending_samples;
// Disc drive state
static u32 s_error_code = 0;
static bool s_disc_inside = false;
// Disc drive timing
static u64 s_read_buffer_start_time;
@ -283,6 +282,8 @@ u64 CalculateRawDiscReadTime(u64 offset, u64 length);
void DoState(PointerWrap& p)
{
bool disc_inside = IsDiscInside();
p.DoPOD(s_DISR);
p.DoPOD(s_DICVR);
p.DoArray(s_DICMDBUF);
@ -302,7 +303,7 @@ void DoState(PointerWrap& p)
p.Do(s_pending_samples);
p.Do(s_error_code);
p.Do(s_disc_inside);
p.Do(disc_inside);
p.Do(s_read_buffer_start_time);
p.Do(s_read_buffer_end_time);
@ -314,13 +315,13 @@ void DoState(PointerWrap& p)
DVDThread::DoState(p);
// s_inserted_volume isn't savestated (because it points to
// files on the local system). Instead, we check that
// s_disc_inside matches the status of s_inserted_volume.
// This won't catch cases of having the wrong disc inserted, though.
// files on the local system). Instead, we check that the
// savestated disc_inside matches our IsDiscInside(). This
// won't catch cases of having the wrong disc inserted, though.
// TODO: Check the game ID, disc number, revision?
if (s_disc_inside != (s_inserted_volume != nullptr))
if (disc_inside != IsDiscInside())
{
if (s_disc_inside)
if (disc_inside)
PanicAlertT("An inserted disc was expected but not found.");
else
s_inserted_volume.reset();
@ -425,7 +426,6 @@ void Init()
Reset();
s_DICVR.Hex = 1; // Disc Channel relies on cover being open when no disc is inserted
s_disc_inside = false;
s_eject_disc = CoreTiming::RegisterEvent("EjectDisc", EjectDiscCallback);
s_insert_disc = CoreTiming::RegisterEvent("InsertDisc", InsertDiscCallback);
@ -508,12 +508,11 @@ bool VolumeIsValid()
void SetDiscInside(bool disc_inside)
{
SetLidOpen(!disc_inside);
s_disc_inside = disc_inside;
}
bool IsDiscInside()
{
return s_disc_inside;
return s_inserted_volume != nullptr;
}
// Take care of all logic of "swapping discs"
@ -702,7 +701,7 @@ void WriteImmediate(u32 value, u32 output_address, bool reply_to_ios)
bool ExecuteReadCommand(u64 DVD_offset, u32 output_address, u32 DVD_length, u32 output_length,
bool decrypt, ReplyType reply_type, DIInterruptType* interrupt_type)
{
if (!s_disc_inside)
if (!IsDiscInside())
{
// Disc read fails
s_error_code = ERROR_NO_DISK | ERROR_COVER_H;
@ -817,8 +816,8 @@ void ExecuteCommand(u32 command_0, u32 command_1, u32 command_2, u32 output_addr
// Probably only used by Wii
case DVDLowGetCoverStatus:
WriteImmediate(s_disc_inside ? 2 : 1, output_address, reply_to_ios);
INFO_LOG(DVDINTERFACE, "DVDLowGetCoverStatus: Disc %sInserted", s_disc_inside ? "" : "Not ");
WriteImmediate(IsDiscInside() ? 2 : 1, output_address, reply_to_ios);
INFO_LOG(DVDINTERFACE, "DVDLowGetCoverStatus: Disc %sInserted", IsDiscInside() ? "" : "Not ");
break;
// Probably only used by Wii