diff options
| author | sl1nk3.s <sl1nk3.s@gmail.com> | 2009-06-07 02:54:07 +0000 |
|---|---|---|
| committer | sl1nk3.s <sl1nk3.s@gmail.com> | 2009-06-07 02:54:07 +0000 |
| commit | 8cb67f472957a8c431e3d1ee18237afadd90e32d (patch) | |
| tree | db50447ad7088b50c310162205ecb7420cf8446b /Source/Core/DiscIO/Src/VolumeCreator.cpp | |
| parent | 7eea69f5c2eeff15a6f9f3a8b5c1d461c2fb6722 (diff) | |
Added wad files detection to the GameListCtrl, some changes to ISOProperties, needs a bit more work ?
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3348 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/DiscIO/Src/VolumeCreator.cpp')
| -rw-r--r-- | Source/Core/DiscIO/Src/VolumeCreator.cpp | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/Source/Core/DiscIO/Src/VolumeCreator.cpp b/Source/Core/DiscIO/Src/VolumeCreator.cpp index 890c2dec00..76ad2aa0a4 100644 --- a/Source/Core/DiscIO/Src/VolumeCreator.cpp +++ b/Source/Core/DiscIO/Src/VolumeCreator.cpp @@ -25,6 +25,7 @@ #include "VolumeDirectory.h" #include "VolumeGC.h" #include "VolumeWiiCrypted.h" +#include "VolumeWad.h" #include "Hash.h" @@ -35,7 +36,8 @@ enum EDiscType DISC_TYPE_UNK, DISC_TYPE_WII, DISC_TYPE_WII_CONTAINER, - DISC_TYPE_GC + DISC_TYPE_GC, + DISC_TYPE_WAD }; #ifndef _WIN32 @@ -80,6 +82,9 @@ IVolume* CreateVolumeFromFilename(const std::string& _rFilename, u32 _PartitionG case DISC_TYPE_GC: return new CVolumeGC(pReader); + case DISC_TYPE_WAD: + return new CVolumeWAD(pReader); + case DISC_TYPE_WII_CONTAINER: { u8 region; @@ -123,6 +128,15 @@ bool IsVolumeWiiDisc(const IVolume *_rVolume) //Gamecube 0xc2339f3d } +bool IsVolumeWadFile(const IVolume *_rVolume) +{ + u32 MagicWord = 0; + _rVolume->Read(0x02, 4, (u8*)&MagicWord); + + return (Common::swap32(MagicWord) == 0x00204973); + // That would be 0x00206962 for boot2 wads +} + IVolume* CreateVolumeFromCryptedWiiImage(IBlobReader& _rReader, u32 _PartitionGroup, u32 _VolumeType, u32 _VolumeNum, bool Korean) { CBlobBigEndianReader Reader(_rReader); @@ -209,6 +223,16 @@ EDiscType GetDiscType(IBlobReader& _rReader) } } + // check for WAD + { + u32 MagicWord = Reader.Read32(0x02); + + // That would be 0x206962 for boot2 wads + // Should we add them too ? + if (MagicWord == 0x00204973) + return(DISC_TYPE_WAD); + } + // check for GC { u32 MagicWord = Reader.Read32(0x1C); |
