summaryrefslogtreecommitdiff
path: root/Source/Core/DiscIO/Src/VolumeCreator.cpp
diff options
context:
space:
mode:
authorsl1nk3.s <sl1nk3.s@gmail.com>2009-06-07 02:54:07 +0000
committersl1nk3.s <sl1nk3.s@gmail.com>2009-06-07 02:54:07 +0000
commit8cb67f472957a8c431e3d1ee18237afadd90e32d (patch)
treedb50447ad7088b50c310162205ecb7420cf8446b /Source/Core/DiscIO/Src/VolumeCreator.cpp
parent7eea69f5c2eeff15a6f9f3a8b5c1d461c2fb6722 (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.cpp26
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);