mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-03 19:42:45 +01:00
Adjust SD getid thing
This commit is contained in:
parent
333636d404
commit
fcb86ce1c1
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
#include "Common/ChunkFile.h"
|
||||||
#include "Common/CommonTypes.h"
|
#include "Common/CommonTypes.h"
|
||||||
#include "Common/Logging/Log.h"
|
#include "Common/Logging/Log.h"
|
||||||
|
|
||||||
@ -17,25 +18,33 @@ CEXISD::CEXISD(Core::System& system) : IEXIDevice(system)
|
|||||||
|
|
||||||
void CEXISD::ImmWrite(u32 data, u32 size)
|
void CEXISD::ImmWrite(u32 data, u32 size)
|
||||||
{
|
{
|
||||||
INFO_LOG_FMT(EXPANSIONINTERFACE, "EXI SD ImmWrite: {:08x}", data);
|
if (inited)
|
||||||
|
{
|
||||||
|
IEXIDevice::ImmWrite(data, size);
|
||||||
|
}
|
||||||
|
else if (size == 2 && data == 0)
|
||||||
|
{
|
||||||
|
// Get ID command
|
||||||
|
INFO_LOG_FMT(EXPANSIONINTERFACE, "SD: EXI_GetID detected (size = {:x}, data = {:x})", size, data);
|
||||||
|
get_id = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 CEXISD::ImmRead(u32 size)
|
u32 CEXISD::ImmRead(u32 size)
|
||||||
{
|
{
|
||||||
INFO_LOG_FMT(EXPANSIONINTERFACE, "EXI SD ImmRead");
|
if (get_id)
|
||||||
|
{
|
||||||
|
// This is not a good way of handling state
|
||||||
|
inited = true;
|
||||||
|
get_id = false;
|
||||||
|
INFO_LOG_FMT(EXPANSIONINTERFACE, "SD: EXI_GetID finished (size = {:x})", size);
|
||||||
|
// Same signed/unsigned mismatch in libogc; it wants -1
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
void CEXISD::DMAWrite(u32 address, u32 size)
|
|
||||||
{
|
{
|
||||||
INFO_LOG_FMT(EXPANSIONINTERFACE, "EXI SD DMAWrite: {:08x} bytes, from {:08x} to device", size,
|
return IEXIDevice::ImmRead(size);
|
||||||
address);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEXISD::DMARead(u32 address, u32 size)
|
|
||||||
{
|
|
||||||
INFO_LOG_FMT(EXPANSIONINTERFACE, "EXI SD DMARead: {:08x} bytes, from device to {:08x}", size,
|
|
||||||
address);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEXISD::SetCS(int cs)
|
void CEXISD::SetCS(int cs)
|
||||||
@ -48,6 +57,14 @@ bool CEXISD::IsPresent() const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CEXISD::DoState(PointerWrap& p)
|
||||||
|
{
|
||||||
|
p.Do(inited);
|
||||||
|
p.Do(get_id);
|
||||||
|
p.Do(command);
|
||||||
|
p.Do(m_uPosition);
|
||||||
|
}
|
||||||
|
|
||||||
void CEXISD::TransferByte(u8& byte)
|
void CEXISD::TransferByte(u8& byte)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
#include "Common/CommonTypes.h"
|
#include "Common/CommonTypes.h"
|
||||||
#include "Core/HW/EXI/EXI_Device.h"
|
#include "Core/HW/EXI/EXI_Device.h"
|
||||||
|
|
||||||
|
class PointerWrap;
|
||||||
|
|
||||||
namespace ExpansionInterface
|
namespace ExpansionInterface
|
||||||
{
|
{
|
||||||
// EXI-SD adapter (DOL-019)
|
// EXI-SD adapter (DOL-019)
|
||||||
@ -19,15 +21,18 @@ public:
|
|||||||
|
|
||||||
void ImmWrite(u32 data, u32 size) override;
|
void ImmWrite(u32 data, u32 size) override;
|
||||||
u32 ImmRead(u32 size) override;
|
u32 ImmRead(u32 size) override;
|
||||||
|
|
||||||
void DMAWrite(u32 address, u32 size) override;
|
|
||||||
void DMARead(u32 address, u32 size) override;
|
|
||||||
|
|
||||||
void SetCS(int cs) override;
|
void SetCS(int cs) override;
|
||||||
|
|
||||||
bool IsPresent() const override;
|
bool IsPresent() const override;
|
||||||
|
void DoState(PointerWrap& p) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void TransferByte(u8& byte) override;
|
void TransferByte(u8& byte) override;
|
||||||
|
|
||||||
|
// STATE_TO_SAVE
|
||||||
|
bool inited = false;
|
||||||
|
bool get_id = false;
|
||||||
|
int command = 0;
|
||||||
|
u32 m_uPosition = 0;
|
||||||
};
|
};
|
||||||
} // namespace ExpansionInterface
|
} // namespace ExpansionInterface
|
||||||
|
Loading…
x
Reference in New Issue
Block a user