mx sram: replace union-with-byte-array with operator[] to make gcc happy.
This commit is contained in:
parent
d300f3bbbc
commit
2a0f022da3
|
@ -341,9 +341,9 @@ void CEXIIPL::TransferByte(u8& data)
|
|||
{
|
||||
u32 dev_addr = DEV_ADDR_CURSOR(SRAM);
|
||||
if (m_command.is_write())
|
||||
g_SRAM.raw[dev_addr] = data;
|
||||
g_SRAM[dev_addr] = data;
|
||||
else
|
||||
data = g_SRAM.raw[dev_addr];
|
||||
data = g_SRAM[dev_addr];
|
||||
}
|
||||
else if (IN_RANGE(UART))
|
||||
{
|
||||
|
|
|
@ -10,13 +10,22 @@
|
|||
#include "Common/Swap.h"
|
||||
#include "Core/ConfigManager.h"
|
||||
|
||||
// english
|
||||
const Sram sram_dump = {{0, 0, 0, 0, 0x00, 0x2C, 0xFF, 0xD0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C,
|
||||
0x44, 0x4F, 0x4C, 0x50, 0x48, 0x49, 0x4E, 0x53, 0x4C, 0x4F, 0x54, 0x41,
|
||||
0x44, 0x4F, 0x4C, 0x50, 0x48, 0x49, 0x4E, 0x53, 0x4C, 0x4F, 0x54, 0x42,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x6E, 0x6D, 0x00, 0x00, 0x00, 0x00}};
|
||||
// English
|
||||
// This is just a template. Most/all fields are updated with sane(r) values at runtime.
|
||||
const Sram sram_dump = {Common::BigEndianValue<u32>{0},
|
||||
{Common::BigEndianValue<u16>{0x2c}, Common::BigEndianValue<u16>{0xffd0}, 0,
|
||||
0, 0, 0, 0, 0, 0x20 | SramFlags::kOobeDone | SramFlags::kStereo},
|
||||
{{
|
||||
{'D', 'O', 'L', 'P', 'H', 'I', 'N', 'S', 'L', 'O', 'T', 'A'},
|
||||
{'D', 'O', 'L', 'P', 'H', 'I', 'N', 'S', 'L', 'O', 'T', 'B'},
|
||||
},
|
||||
0,
|
||||
{},
|
||||
0,
|
||||
0,
|
||||
{0x6E, 0x6D},
|
||||
0,
|
||||
{}}};
|
||||
|
||||
#if 0
|
||||
// german
|
||||
|
|
|
@ -114,17 +114,17 @@ struct SramSettingsEx
|
|||
u8 field_3e[2];
|
||||
};
|
||||
|
||||
union Sram
|
||||
struct Sram
|
||||
{
|
||||
// TODO determine real full sram size for gc/wii
|
||||
u8 raw[0x44];
|
||||
struct
|
||||
{
|
||||
Common::BigEndianValue<u32> rtc;
|
||||
SramSettings settings;
|
||||
SramSettingsEx settings_ex;
|
||||
};
|
||||
Common::BigEndianValue<u32> rtc;
|
||||
SramSettings settings;
|
||||
SramSettingsEx settings_ex;
|
||||
// Allow access to this entire structure as a raw blob
|
||||
// Typical union-with-byte-array method can't be used here on GCC
|
||||
u8& operator[](size_t offset) { return reinterpret_cast<u8*>(&rtc)[offset]; }
|
||||
};
|
||||
// TODO determine real full sram size for gc/wii
|
||||
static_assert(sizeof(Sram) == 0x44);
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
|
|
|
@ -353,7 +353,7 @@ unsigned int NetPlayServer::OnConnect(ENetPeer* socket)
|
|||
spac << static_cast<MessageId>(NP_MSG_SYNC_GC_SRAM);
|
||||
for (size_t i = 0; i < sizeof(g_SRAM) - offsetof(Sram, settings); ++i)
|
||||
{
|
||||
spac << g_SRAM.raw[offsetof(Sram, settings) + i];
|
||||
spac << g_SRAM[offsetof(Sram, settings) + i];
|
||||
}
|
||||
Send(player.socket, spac);
|
||||
|
||||
|
|
Loading…
Reference in New Issue