MemcardManager:

Fix most banner issues that I have seen.
1. Banners from any imported sav file
2. Banners for Time Splitters 2

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1967 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
LPFaint99 2009-01-21 03:49:38 +00:00
parent a3b9c39fbf
commit f703046e01
2 changed files with 10 additions and 3 deletions

View File

@ -818,6 +818,8 @@ u32 GCMemcard::ImportGci(const char *fileName, std::string fileName2)
// 0x2C and 0x2D, 0x2E and 0x2F, 0x30 and 0x31, 0x32 and 0x33,
// 0x34 and 0x35, 0x36 and 0x37, 0x38 and 0x39, 0x3A and 0x3B,
// 0x3C and 0x3D,0x3E and 0x3F.
// It seems that sav files also swap the BIFlags...
ByteSwap(&d->Unused1, &d->BIFlags);
ArrayByteSwap((d->ImageOffset));
ArrayByteSwap(&(d->ImageOffset[2]));
ArrayByteSwap((d->IconFmt));
@ -915,6 +917,9 @@ bool GCMemcard::ReadBannerRGBA8(u8 index, u32* buffer)
if (!mcdFile) return false;
int flags = dir.Dir[index].BIFlags;
// Timesplitters 2 is the only game that I see this in
// May be a hack
if (flags == 0xFB) flags = ~flags;
int bnrFormat = (flags&3);
@ -955,7 +960,9 @@ u32 GCMemcard::ReadAnimRGBA8(u8 index, u32* buffer, u8 *delays)
int fdelays = BE16(dir.Dir[index].AnimSpeed);
int flags = dir.Dir[index].BIFlags;
// Timesplitters 2 is the only game that I see this in
// May be a hack
if (flags == 0xFB) flags = ~flags;
int bnrFormat = (flags&3);
u32 DataOffset = BE32(dir.Dir[index].ImageOffset);

View File

@ -56,7 +56,7 @@ private:
u32 low;
u32 high;
};
public:
struct Header { //Offset Size Description
u8 Unk1[12]; //0x0000 12 ?
OSTime fmtTime; //0x000c 8 time of format (OSTime value)
@ -135,7 +135,7 @@ private:
} bat,bat_backup;
#pragma pack(pop)
public:
//public:
bool fail;
// constructor