mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-08 13:43:33 +01:00
HW: Move g_SRAM to System.
This commit is contained in:
parent
0a517ebdbd
commit
c21f2512c8
@ -21,10 +21,10 @@
|
|||||||
#include "Core/HW/Sram.h"
|
#include "Core/HW/Sram.h"
|
||||||
#include "Core/HW/SystemTimers.h"
|
#include "Core/HW/SystemTimers.h"
|
||||||
#include "Core/Movie.h"
|
#include "Core/Movie.h"
|
||||||
|
#include "Core/System.h"
|
||||||
|
|
||||||
#include "DiscIO/Enums.h"
|
#include "DiscIO/Enums.h"
|
||||||
|
|
||||||
Sram g_SRAM;
|
|
||||||
bool s_using_overridden_sram = false;
|
bool s_using_overridden_sram = false;
|
||||||
|
|
||||||
namespace ExpansionInterface
|
namespace ExpansionInterface
|
||||||
@ -105,14 +105,15 @@ u8 SlotToEXIDevice(Slot slot)
|
|||||||
|
|
||||||
void Init(const Sram* override_sram)
|
void Init(const Sram* override_sram)
|
||||||
{
|
{
|
||||||
|
auto& sram = Core::System::GetInstance().GetSRAM();
|
||||||
if (override_sram)
|
if (override_sram)
|
||||||
{
|
{
|
||||||
g_SRAM = *override_sram;
|
sram = *override_sram;
|
||||||
s_using_overridden_sram = true;
|
s_using_overridden_sram = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
InitSRAM(&g_SRAM, SConfig::GetInstance().m_strSRAM);
|
InitSRAM(&sram, SConfig::GetInstance().m_strSRAM);
|
||||||
s_using_overridden_sram = false;
|
s_using_overridden_sram = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,9 +126,9 @@ void Init(const Sram* override_sram)
|
|||||||
size_mbits = Memcard::MBIT_SIZE_MEMORY_CARD_59 << size_override;
|
size_mbits = Memcard::MBIT_SIZE_MEMORY_CARD_59 << size_override;
|
||||||
const bool shift_jis =
|
const bool shift_jis =
|
||||||
Config::ToGameCubeRegion(SConfig::GetInstance().m_region) == DiscIO::Region::NTSC_J;
|
Config::ToGameCubeRegion(SConfig::GetInstance().m_region) == DiscIO::Region::NTSC_J;
|
||||||
const CardFlashId& flash_id = g_SRAM.settings_ex.flash_id[Memcard::SLOT_A];
|
const CardFlashId& flash_id = sram.settings_ex.flash_id[Memcard::SLOT_A];
|
||||||
const u32 rtc_bias = g_SRAM.settings.rtc_bias;
|
const u32 rtc_bias = sram.settings.rtc_bias;
|
||||||
const u32 sram_language = static_cast<u32>(g_SRAM.settings.language);
|
const u32 sram_language = static_cast<u32>(sram.settings.language);
|
||||||
const u64 format_time =
|
const u64 format_time =
|
||||||
Common::Timer::GetLocalTimeSinceJan1970() - ExpansionInterface::CEXIIPL::GC_EPOCH;
|
Common::Timer::GetLocalTimeSinceJan1970() - ExpansionInterface::CEXIIPL::GC_EPOCH;
|
||||||
|
|
||||||
@ -162,7 +163,8 @@ void Shutdown()
|
|||||||
if (!s_using_overridden_sram)
|
if (!s_using_overridden_sram)
|
||||||
{
|
{
|
||||||
File::IOFile file(SConfig::GetInstance().m_strSRAM, "wb");
|
File::IOFile file(SConfig::GetInstance().m_strSRAM, "wb");
|
||||||
file.WriteArray(&g_SRAM, 1);
|
auto& sram = Core::System::GetInstance().GetSRAM();
|
||||||
|
file.WriteArray(&sram, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "Core/HW/SystemTimers.h"
|
#include "Core/HW/SystemTimers.h"
|
||||||
#include "Core/Movie.h"
|
#include "Core/Movie.h"
|
||||||
#include "Core/NetPlayProto.h"
|
#include "Core/NetPlayProto.h"
|
||||||
|
#include "Core/System.h"
|
||||||
|
|
||||||
#include "DiscIO/Enums.h"
|
#include "DiscIO/Enums.h"
|
||||||
|
|
||||||
@ -129,21 +130,25 @@ CEXIIPL::CEXIIPL()
|
|||||||
LoadFontFile((File::GetSysDirectory() + GC_SYS_DIR + DIR_SEP + FONT_WINDOWS_1252), 0x1fcf00);
|
LoadFontFile((File::GetSysDirectory() + GC_SYS_DIR + DIR_SEP + FONT_WINDOWS_1252), 0x1fcf00);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto& sram = Core::System::GetInstance().GetSRAM();
|
||||||
|
|
||||||
// Clear RTC
|
// Clear RTC
|
||||||
g_SRAM.rtc = 0;
|
sram.rtc = 0;
|
||||||
|
|
||||||
// We Overwrite language selection here since it's possible on the GC to change the language as
|
// We Overwrite language selection here since it's possible on the GC to change the language as
|
||||||
// you please
|
// you please
|
||||||
g_SRAM.settings.language = Config::Get(Config::MAIN_GC_LANGUAGE);
|
sram.settings.language = Config::Get(Config::MAIN_GC_LANGUAGE);
|
||||||
g_SRAM.settings.rtc_bias = 0;
|
sram.settings.rtc_bias = 0;
|
||||||
FixSRAMChecksums(&g_SRAM);
|
FixSRAMChecksums(&sram);
|
||||||
}
|
}
|
||||||
|
|
||||||
CEXIIPL::~CEXIIPL() = default;
|
CEXIIPL::~CEXIIPL() = default;
|
||||||
|
|
||||||
void CEXIIPL::DoState(PointerWrap& p)
|
void CEXIIPL::DoState(PointerWrap& p)
|
||||||
{
|
{
|
||||||
p.Do(g_SRAM);
|
auto& sram = Core::System::GetInstance().GetSRAM();
|
||||||
|
|
||||||
|
p.Do(sram);
|
||||||
p.Do(g_rtc_flags);
|
p.Do(g_rtc_flags);
|
||||||
p.Do(m_command);
|
p.Do(m_command);
|
||||||
p.Do(m_command_bytes_received);
|
p.Do(m_command_bytes_received);
|
||||||
@ -246,7 +251,8 @@ void CEXIIPL::SetCS(int cs)
|
|||||||
|
|
||||||
void CEXIIPL::UpdateRTC()
|
void CEXIIPL::UpdateRTC()
|
||||||
{
|
{
|
||||||
g_SRAM.rtc = GetEmulatedTime(GC_EPOCH);
|
auto& sram = Core::System::GetInstance().GetSRAM();
|
||||||
|
sram.rtc = GetEmulatedTime(GC_EPOCH);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CEXIIPL::IsPresent() const
|
bool CEXIIPL::IsPresent() const
|
||||||
@ -336,11 +342,12 @@ void CEXIIPL::TransferByte(u8& data)
|
|||||||
}
|
}
|
||||||
else if (IN_RANGE(SRAM))
|
else if (IN_RANGE(SRAM))
|
||||||
{
|
{
|
||||||
|
auto& sram = Core::System::GetInstance().GetSRAM();
|
||||||
u32 dev_addr = DEV_ADDR_CURSOR(SRAM);
|
u32 dev_addr = DEV_ADDR_CURSOR(SRAM);
|
||||||
if (m_command.is_write())
|
if (m_command.is_write())
|
||||||
g_SRAM[dev_addr] = data;
|
sram[dev_addr] = data;
|
||||||
else
|
else
|
||||||
data = g_SRAM[dev_addr];
|
data = sram[dev_addr];
|
||||||
}
|
}
|
||||||
else if (IN_RANGE(UART))
|
else if (IN_RANGE(UART))
|
||||||
{
|
{
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
#include "Core/HW/Sram.h"
|
#include "Core/HW/Sram.h"
|
||||||
#include "Core/HW/SystemTimers.h"
|
#include "Core/HW/SystemTimers.h"
|
||||||
#include "Core/Movie.h"
|
#include "Core/Movie.h"
|
||||||
|
#include "Core/System.h"
|
||||||
#include "DiscIO/Enums.h"
|
#include "DiscIO/Enums.h"
|
||||||
|
|
||||||
namespace ExpansionInterface
|
namespace ExpansionInterface
|
||||||
@ -141,7 +142,8 @@ CEXIMemoryCard::CEXIMemoryCard(const Slot slot, bool gci_folder,
|
|||||||
m_memory_card_size = m_memory_card->GetCardId() * SIZE_TO_Mb;
|
m_memory_card_size = m_memory_card->GetCardId() * SIZE_TO_Mb;
|
||||||
std::array<u8, 20> header{};
|
std::array<u8, 20> header{};
|
||||||
m_memory_card->Read(0, static_cast<s32>(header.size()), header.data());
|
m_memory_card->Read(0, static_cast<s32>(header.size()), header.data());
|
||||||
SetCardFlashID(&g_SRAM, header.data(), m_card_slot);
|
auto& sram = Core::System::GetInstance().GetSRAM();
|
||||||
|
SetCardFlashID(&sram, header.data(), m_card_slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::pair<std::string /* path */, bool /* migrate */>
|
std::pair<std::string /* path */, bool /* migrate */>
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include "Core/HW/EXI/EXI_DeviceIPL.h"
|
#include "Core/HW/EXI/EXI_DeviceIPL.h"
|
||||||
#include "Core/HW/GCMemcard/GCMemcard.h"
|
#include "Core/HW/GCMemcard/GCMemcard.h"
|
||||||
#include "Core/HW/Sram.h"
|
#include "Core/HW/Sram.h"
|
||||||
|
#include "Core/System.h"
|
||||||
|
|
||||||
#define SIZE_TO_Mb (1024 * 8 * 16)
|
#define SIZE_TO_Mb (1024 * 8 * 16)
|
||||||
#define MC_HDR_SIZE 0xA000
|
#define MC_HDR_SIZE 0xA000
|
||||||
@ -59,10 +60,11 @@ MemoryCard::MemoryCard(const std::string& filename, ExpansionInterface::Slot car
|
|||||||
m_memcard_data = std::make_unique<u8[]>(m_memory_card_size);
|
m_memcard_data = std::make_unique<u8[]>(m_memory_card_size);
|
||||||
|
|
||||||
// Fills in the first 5 blocks (MC_HDR_SIZE bytes)
|
// Fills in the first 5 blocks (MC_HDR_SIZE bytes)
|
||||||
const CardFlashId& flash_id = g_SRAM.settings_ex.flash_id[Memcard::SLOT_A];
|
auto& sram = Core::System::GetInstance().GetSRAM();
|
||||||
|
const CardFlashId& flash_id = sram.settings_ex.flash_id[Memcard::SLOT_A];
|
||||||
const bool shift_jis = m_filename.find(".JAP.raw") != std::string::npos;
|
const bool shift_jis = m_filename.find(".JAP.raw") != std::string::npos;
|
||||||
const u32 rtc_bias = g_SRAM.settings.rtc_bias;
|
const u32 rtc_bias = sram.settings.rtc_bias;
|
||||||
const u32 sram_language = static_cast<u32>(g_SRAM.settings.language);
|
const u32 sram_language = static_cast<u32>(sram.settings.language);
|
||||||
const u64 format_time =
|
const u64 format_time =
|
||||||
Common::Timer::GetLocalTimeSinceJan1970() - ExpansionInterface::CEXIIPL::GC_EPOCH;
|
Common::Timer::GetLocalTimeSinceJan1970() - ExpansionInterface::CEXIIPL::GC_EPOCH;
|
||||||
Memcard::GCMemcard::Format(&m_memcard_data[0], flash_id, size_mbits, shift_jis, rtc_bias,
|
Memcard::GCMemcard::Format(&m_memcard_data[0], flash_id, size_mbits, shift_jis, rtc_bias,
|
||||||
|
@ -137,5 +137,3 @@ static_assert(sizeof(Sram) == 0x44);
|
|||||||
void InitSRAM(Sram* sram, const std::string& filename);
|
void InitSRAM(Sram* sram, const std::string& filename);
|
||||||
void SetCardFlashID(Sram* sram, const u8* buffer, ExpansionInterface::Slot card_slot);
|
void SetCardFlashID(Sram* sram, const u8* buffer, ExpansionInterface::Slot card_slot);
|
||||||
void FixSRAMChecksums(Sram* sram);
|
void FixSRAMChecksums(Sram* sram);
|
||||||
|
|
||||||
extern Sram g_SRAM;
|
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include "Core/HW/AudioInterface.h"
|
#include "Core/HW/AudioInterface.h"
|
||||||
#include "Core/HW/DVD/DVDInterface.h"
|
#include "Core/HW/DVD/DVDInterface.h"
|
||||||
#include "Core/HW/DVD/DVDThread.h"
|
#include "Core/HW/DVD/DVDThread.h"
|
||||||
|
#include "Core/HW/Sram.h"
|
||||||
|
|
||||||
namespace Core
|
namespace Core
|
||||||
{
|
{
|
||||||
@ -22,6 +23,7 @@ struct System::Impl
|
|||||||
AudioInterface::AudioInterfaceState m_audio_interface_state;
|
AudioInterface::AudioInterfaceState m_audio_interface_state;
|
||||||
DVDInterface::DVDInterfaceState m_dvd_interface_state;
|
DVDInterface::DVDInterfaceState m_dvd_interface_state;
|
||||||
DVDThread::DVDThreadState m_dvd_thread_state;
|
DVDThread::DVDThreadState m_dvd_thread_state;
|
||||||
|
Sram m_sram;
|
||||||
};
|
};
|
||||||
|
|
||||||
System::System() : m_impl{std::make_unique<Impl>()}
|
System::System() : m_impl{std::make_unique<Impl>()}
|
||||||
@ -80,4 +82,9 @@ DVDThread::DVDThreadState& System::GetDVDThreadState() const
|
|||||||
{
|
{
|
||||||
return m_impl->m_dvd_thread_state;
|
return m_impl->m_dvd_thread_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Sram& System::GetSRAM() const
|
||||||
|
{
|
||||||
|
return m_impl->m_sram;
|
||||||
|
}
|
||||||
} // namespace Core
|
} // namespace Core
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
class SoundStream;
|
class SoundStream;
|
||||||
|
struct Sram;
|
||||||
|
|
||||||
namespace AudioInterface
|
namespace AudioInterface
|
||||||
{
|
{
|
||||||
@ -56,6 +57,7 @@ public:
|
|||||||
AudioInterface::AudioInterfaceState& GetAudioInterfaceState() const;
|
AudioInterface::AudioInterfaceState& GetAudioInterfaceState() const;
|
||||||
DVDInterface::DVDInterfaceState& GetDVDInterfaceState() const;
|
DVDInterface::DVDInterfaceState& GetDVDInterfaceState() const;
|
||||||
DVDThread::DVDThreadState& GetDVDThreadState() const;
|
DVDThread::DVDThreadState& GetDVDThreadState() const;
|
||||||
|
Sram& GetSRAM() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
System();
|
System();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user