diff options
| author | bushing <bushing@gmail.com> | 2008-12-08 04:46:09 +0000 |
|---|---|---|
| committer | bushing <bushing@gmail.com> | 2008-12-08 04:46:09 +0000 |
| commit | 30c883bcfc65761dc9fb61fea16a25fb61a7e220 (patch) | |
| tree | f0e77927cfb598e860faf386c7c8089c38a9b726 /Source/Core/DiscIO | |
| parent | e6fe5ec42f025a710918c1aaf8643da36a13bb3e (diff) | |
set svn:eol-style=native for **.h
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1438 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/DiscIO')
| -rw-r--r-- | Source/Core/DiscIO/Src/BannerLoader.h | 114 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Src/BannerLoaderGC.h | 194 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Src/BannerLoaderWii.h | 164 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Src/Blob.h | 164 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Src/CompressedBlob.h | 166 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Src/DriveBlob.h | 120 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Src/FileBlob.h | 106 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Src/FileHandlerARC.h | 132 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Src/FileSystemGCWii.h | 114 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Src/Filesystem.h | 138 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Src/Volume.h | 128 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Src/VolumeCreator.h | 62 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Src/VolumeDirectory.h | 212 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Src/VolumeGC.h | 90 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Src/VolumeWiiCrypted.h | 116 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Src/stdafx.h | 60 |
16 files changed, 1040 insertions, 1040 deletions
diff --git a/Source/Core/DiscIO/Src/BannerLoader.h b/Source/Core/DiscIO/Src/BannerLoader.h index a5be1939ab..33a2e207a8 100644 --- a/Source/Core/DiscIO/Src/BannerLoader.h +++ b/Source/Core/DiscIO/Src/BannerLoader.h @@ -1,57 +1,57 @@ -// Copyright (C) 2003-2008 Dolphin Project.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 2.0.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License 2.0 for more details.
-
-// A copy of the GPL 2.0 should have been included with the program.
-// If not, see http://www.gnu.org/licenses/
-
-// Official SVN repository and contact information can be found at
-// http://code.google.com/p/dolphin-emu/
-
-#ifndef _BANNER_LOADER_H_
-#define _BANNER_LOADER_H_
-
-#include "Filesystem.h"
-
-namespace DiscIO
-{
-class IBannerLoader
-{
- public:
-
- IBannerLoader()
- {}
-
-
- virtual ~IBannerLoader()
- {}
-
-
- virtual bool IsValid() = 0;
-
- virtual bool GetBanner(u32* _pBannerImage) = 0;
-
- virtual bool GetName(std::string& _rName, int language) = 0;
-
- virtual bool GetCompany(std::string& _rCompany) = 0;
-
- virtual bool GetDescription(std::string& _rDescription) = 0;
-
-
- protected:
-
- bool CopyToStringAndCheck(std::string& _rDestination, const char* _src);
-};
-
-IBannerLoader* CreateBannerLoader(DiscIO::IFileSystem& _rFileSystem);
-} // namespace
-
-#endif
-
+// Copyright (C) 2003-2008 Dolphin Project. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 2.0. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License 2.0 for more details. + +// A copy of the GPL 2.0 should have been included with the program. +// If not, see http://www.gnu.org/licenses/ + +// Official SVN repository and contact information can be found at +// http://code.google.com/p/dolphin-emu/ + +#ifndef _BANNER_LOADER_H_ +#define _BANNER_LOADER_H_ + +#include "Filesystem.h" + +namespace DiscIO +{ +class IBannerLoader +{ + public: + + IBannerLoader() + {} + + + virtual ~IBannerLoader() + {} + + + virtual bool IsValid() = 0; + + virtual bool GetBanner(u32* _pBannerImage) = 0; + + virtual bool GetName(std::string& _rName, int language) = 0; + + virtual bool GetCompany(std::string& _rCompany) = 0; + + virtual bool GetDescription(std::string& _rDescription) = 0; + + + protected: + + bool CopyToStringAndCheck(std::string& _rDestination, const char* _src); +}; + +IBannerLoader* CreateBannerLoader(DiscIO::IFileSystem& _rFileSystem); +} // namespace + +#endif + diff --git a/Source/Core/DiscIO/Src/BannerLoaderGC.h b/Source/Core/DiscIO/Src/BannerLoaderGC.h index 7c1264ee45..1639338fa4 100644 --- a/Source/Core/DiscIO/Src/BannerLoaderGC.h +++ b/Source/Core/DiscIO/Src/BannerLoaderGC.h @@ -1,97 +1,97 @@ -// Copyright (C) 2003-2008 Dolphin Project.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 2.0.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License 2.0 for more details.
-
-// A copy of the GPL 2.0 should have been included with the program.
-// If not, see http://www.gnu.org/licenses/
-
-// Official SVN repository and contact information can be found at
-// http://code.google.com/p/dolphin-emu/
-
-#ifndef _BANNER_LOADER_GC_H_
-#define _BANNER_LOADER_GC_H_
-
-#include "BannerLoader.h"
-
-namespace DiscIO
-{
-class CBannerLoaderGC
- : public IBannerLoader
-{
- public:
-
- CBannerLoaderGC(DiscIO::IFileSystem& _rFileSystem);
-
- virtual ~CBannerLoaderGC();
-
- virtual bool IsValid();
-
- virtual bool GetBanner(u32* _pBannerImage);
-
- virtual bool GetName(std::string& _rName, int language);
-
- virtual bool GetCompany(std::string& _rCompany);
-
- virtual bool GetDescription(std::string& _rDescription);
-
-
- private:
-
- enum
- {
- DVD_BANNER_WIDTH = 96,
- DVD_BANNER_HEIGHT = 32
- };
-
- // Banner Comment
- struct DVDBannerComment
- {
- char shortTitle[32]; // Short game title shown in IPL menu
- char shortMaker[32]; // Short developer, publisher names shown in IPL menu
- char longTitle[64]; // Long game title shown in IPL game start screen
- char longMaker[64]; // Long developer, publisher names shown in IPL game start screen
- char comment[128]; // Game description shown in IPL game start screen in two lines.
- };
-
- // "opening.bnr" file format for JP/US console
- struct DVDBanner
- {
- u32 id; // 'BNR1'
- u32 padding[7];
- u16 image[DVD_BANNER_WIDTH * DVD_BANNER_HEIGHT]; // RGB5A3 96x32 texture image
- DVDBannerComment comment;
- };
-
- // "opening.bnr" file format for EU console
- struct DVDBanner2
- {
- u32 id; // 'BNR2'
- u32 padding[7];
- u16 image[DVD_BANNER_WIDTH * DVD_BANNER_HEIGHT]; // RGB5A3 96x32 texture image
- DVDBannerComment comment[6]; // Comments in six languages
- };
-
-
- // for banner decoding
- int lut3to8[8];
- int lut4to8[16];
- int lut5to8[32];
-
- u8* m_pBannerFile;
-
- bool m_IsValid;
-
- u32 decode5A3(u16 val);
- void decode5A3image(u32* dst, u16* src, int width, int height);
-};
-} // namespace
-
-#endif
-
+// Copyright (C) 2003-2008 Dolphin Project. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 2.0. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License 2.0 for more details. + +// A copy of the GPL 2.0 should have been included with the program. +// If not, see http://www.gnu.org/licenses/ + +// Official SVN repository and contact information can be found at +// http://code.google.com/p/dolphin-emu/ + +#ifndef _BANNER_LOADER_GC_H_ +#define _BANNER_LOADER_GC_H_ + +#include "BannerLoader.h" + +namespace DiscIO +{ +class CBannerLoaderGC + : public IBannerLoader +{ + public: + + CBannerLoaderGC(DiscIO::IFileSystem& _rFileSystem); + + virtual ~CBannerLoaderGC(); + + virtual bool IsValid(); + + virtual bool GetBanner(u32* _pBannerImage); + + virtual bool GetName(std::string& _rName, int language); + + virtual bool GetCompany(std::string& _rCompany); + + virtual bool GetDescription(std::string& _rDescription); + + + private: + + enum + { + DVD_BANNER_WIDTH = 96, + DVD_BANNER_HEIGHT = 32 + }; + + // Banner Comment + struct DVDBannerComment + { + char shortTitle[32]; // Short game title shown in IPL menu + char shortMaker[32]; // Short developer, publisher names shown in IPL menu + char longTitle[64]; // Long game title shown in IPL game start screen + char longMaker[64]; // Long developer, publisher names shown in IPL game start screen + char comment[128]; // Game description shown in IPL game start screen in two lines. + }; + + // "opening.bnr" file format for JP/US console + struct DVDBanner + { + u32 id; // 'BNR1' + u32 padding[7]; + u16 image[DVD_BANNER_WIDTH * DVD_BANNER_HEIGHT]; // RGB5A3 96x32 texture image + DVDBannerComment comment; + }; + + // "opening.bnr" file format for EU console + struct DVDBanner2 + { + u32 id; // 'BNR2' + u32 padding[7]; + u16 image[DVD_BANNER_WIDTH * DVD_BANNER_HEIGHT]; // RGB5A3 96x32 texture image + DVDBannerComment comment[6]; // Comments in six languages + }; + + + // for banner decoding + int lut3to8[8]; + int lut4to8[16]; + int lut5to8[32]; + + u8* m_pBannerFile; + + bool m_IsValid; + + u32 decode5A3(u16 val); + void decode5A3image(u32* dst, u16* src, int width, int height); +}; +} // namespace + +#endif + diff --git a/Source/Core/DiscIO/Src/BannerLoaderWii.h b/Source/Core/DiscIO/Src/BannerLoaderWii.h index 48efa2b875..277f0f55ac 100644 --- a/Source/Core/DiscIO/Src/BannerLoaderWii.h +++ b/Source/Core/DiscIO/Src/BannerLoaderWii.h @@ -1,82 +1,82 @@ -// Copyright (C) 2003-2008 Dolphin Project.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 2.0.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License 2.0 for more details.
-
-// A copy of the GPL 2.0 should have been included with the program.
-// If not, see http://www.gnu.org/licenses/
-
-// Official SVN repository and contact information can be found at
-// http://code.google.com/p/dolphin-emu/
-
-#ifndef _BANNER_LOADER_WII_H_
-#define _BANNER_LOADER_WII_H_
-
-#include "BannerLoader.h"
-
-namespace DiscIO
-{
-class CBannerLoaderWii
- : public IBannerLoader
-{
- public:
-
- CBannerLoaderWii(DiscIO::IFileSystem& _rFileSystem);
-
- virtual ~CBannerLoaderWii();
-
- virtual bool IsValid();
-
- virtual bool GetBanner(u32* _pBannerImage);
-
- virtual bool GetName(std::string& _rName, int language);
-
- virtual bool GetCompany(std::string& _rCompany);
-
- virtual bool GetDescription(std::string& _rDescription);
-
-
- private:
-
- #define WII_BANNER_TEXTURE_SIZE (192 * 64 * 2)
- #define WII_BANNER_ICON_SIZE ( 48 * 48 * 2)
- #define WII_BANNER_COMMENT_SIZE 32
-
- struct SWiiBanner
- {
- u32 ID;
-
- u32 m_Flag;
- u16 m_Speed;
- u8 m_Unknown[22];
-
- u16 m_Comment[2][WII_BANNER_COMMENT_SIZE];
- u8 m_BannerTexture[WII_BANNER_TEXTURE_SIZE];
- u8 m_IconTexture[8][WII_BANNER_ICON_SIZE];
- } ;
-
- // for banner decoding
- int lut3to8[8];
- int lut4to8[16];
- int lut5to8[32];
-
- u8* m_pBannerFile;
-
- bool m_IsValid;
-
- void InitLUTTable();
- u32 decode5A3(u16 val);
- void decode5A3image(u32* dst, u16* src, int width, int height);
-
- std::string StupidWideCharToString(u16* _pSrc, size_t _max);
-};
-} // namespace
-
-#endif
-
+// Copyright (C) 2003-2008 Dolphin Project. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 2.0. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License 2.0 for more details. + +// A copy of the GPL 2.0 should have been included with the program. +// If not, see http://www.gnu.org/licenses/ + +// Official SVN repository and contact information can be found at +// http://code.google.com/p/dolphin-emu/ + +#ifndef _BANNER_LOADER_WII_H_ +#define _BANNER_LOADER_WII_H_ + +#include "BannerLoader.h" + +namespace DiscIO +{ +class CBannerLoaderWii + : public IBannerLoader +{ + public: + + CBannerLoaderWii(DiscIO::IFileSystem& _rFileSystem); + + virtual ~CBannerLoaderWii(); + + virtual bool IsValid(); + + virtual bool GetBanner(u32* _pBannerImage); + + virtual bool GetName(std::string& _rName, int language); + + virtual bool GetCompany(std::string& _rCompany); + + virtual bool GetDescription(std::string& _rDescription); + + + private: + + #define WII_BANNER_TEXTURE_SIZE (192 * 64 * 2) + #define WII_BANNER_ICON_SIZE ( 48 * 48 * 2) + #define WII_BANNER_COMMENT_SIZE 32 + + struct SWiiBanner + { + u32 ID; + + u32 m_Flag; + u16 m_Speed; + u8 m_Unknown[22]; + + u16 m_Comment[2][WII_BANNER_COMMENT_SIZE]; + u8 m_BannerTexture[WII_BANNER_TEXTURE_SIZE]; + u8 m_IconTexture[8][WII_BANNER_ICON_SIZE]; + } ; + + // for banner decoding + int lut3to8[8]; + int lut4to8[16]; + int lut5to8[32]; + + u8* m_pBannerFile; + + bool m_IsValid; + + void InitLUTTable(); + u32 decode5A3(u16 val); + void decode5A3image(u32* dst, u16* src, int width, int height); + + std::string StupidWideCharToString(u16* _pSrc, size_t _max); +}; +} // namespace + +#endif + diff --git a/Source/Core/DiscIO/Src/Blob.h b/Source/Core/DiscIO/Src/Blob.h index c5104b1355..1722173d5a 100644 --- a/Source/Core/DiscIO/Src/Blob.h +++ b/Source/Core/DiscIO/Src/Blob.h @@ -1,82 +1,82 @@ -// Copyright (C) 2003-2008 Dolphin Project.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 2.0.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License 2.0 for more details.
-
-// A copy of the GPL 2.0 should have been included with the program.
-// If not, see http://www.gnu.org/licenses/
-
-// Official SVN repository and contact information can be found at
-// http://code.google.com/p/dolphin-emu/
-
-#ifndef _BLOB_H
-#define _BLOB_H
-
-// BLOB
-
-// Blobs in Dolphin are read only Binary Large OBjects. For example, a typical DVD image.
-// Often, you may want to store these things in a highly compressed format, but still
-// allow random access. Or you may store them on an odd device, like raw on a DVD.
-
-// Always read your BLOBs using an interface returned by CreateBlobReader(). It will
-// detect whether the file is a compressed blob, or just a big hunk of data, and
-// automatically do the right thing.
-
-#include "Common.h"
-
-namespace DiscIO
-{
-
-class IBlobReader
-{
-public:
- virtual ~IBlobReader() {}
-
- virtual u64 GetRawSize() const = 0;
- virtual u64 GetDataSize() const = 0;
- virtual bool Read(u64 offset, u64 size, u8* out_ptr) = 0;
-
-protected:
- IBlobReader() {}
-};
-
-
-// Provides caching and split-operation-to-block-operations facilities.
-// Used for compressed blob reading and direct drive reading.
-class SectorReader : public IBlobReader
-{
-private:
- virtual void GetBlock(u64 block_num, u8 *out) = 0;
- enum { CACHE_SIZE = 32 };
- int m_blocksize;
- u8* cache[CACHE_SIZE];
- u64 cache_tags[CACHE_SIZE];
- int cache_age[CACHE_SIZE];
-protected:
- void SetSectorSize(int blocksize);
-public:
- ~SectorReader();
- const u8 *GetBlockData(u64 block_num);
- bool Read(u64 offset, u64 size, u8* out_ptr);
-};
-
-// Factory function - examines the path to choose the right type of IBlobReader, and returns one.
-IBlobReader* CreateBlobReader(const char* filename);
-
-typedef void (*CompressCB)(const char* text, float percent, void* arg);
-
-bool CompressFileToBlob(const char* infile, const char* outfile, u32 sub_type = 0, int sector_size = 16384,
- CompressCB callback = 0, void* arg = 0);
-bool DecompressBlobToFile(const char* infile, const char* outfile,
- CompressCB callback = 0, void* arg = 0);
-
-} // namespace
-
-#endif
-
+// Copyright (C) 2003-2008 Dolphin Project. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 2.0. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License 2.0 for more details. + +// A copy of the GPL 2.0 should have been included with the program. +// If not, see http://www.gnu.org/licenses/ + +// Official SVN repository and contact information can be found at +// http://code.google.com/p/dolphin-emu/ + +#ifndef _BLOB_H +#define _BLOB_H + +// BLOB + +// Blobs in Dolphin are read only Binary Large OBjects. For example, a typical DVD image. +// Often, you may want to store these things in a highly compressed format, but still +// allow random access. Or you may store them on an odd device, like raw on a DVD. + +// Always read your BLOBs using an interface returned by CreateBlobReader(). It will +// detect whether the file is a compressed blob, or just a big hunk of data, and +// automatically do the right thing. + +#include "Common.h" + +namespace DiscIO +{ + +class IBlobReader +{ +public: + virtual ~IBlobReader() {} + + virtual u64 GetRawSize() const = 0; + virtual u64 GetDataSize() const = 0; + virtual bool Read(u64 offset, u64 size, u8* out_ptr) = 0; + +protected: + IBlobReader() {} +}; + + +// Provides caching and split-operation-to-block-operations facilities. +// Used for compressed blob reading and direct drive reading. +class SectorReader : public IBlobReader +{ +private: + virtual void GetBlock(u64 block_num, u8 *out) = 0; + enum { CACHE_SIZE = 32 }; + int m_blocksize; + u8* cache[CACHE_SIZE]; + u64 cache_tags[CACHE_SIZE]; + int cache_age[CACHE_SIZE]; +protected: + void SetSectorSize(int blocksize); +public: + ~SectorReader(); + const u8 *GetBlockData(u64 block_num); + bool Read(u64 offset, u64 size, u8* out_ptr); +}; + +// Factory function - examines the path to choose the right type of IBlobReader, and returns one. +IBlobReader* CreateBlobReader(const char* filename); + +typedef void (*CompressCB)(const char* text, float percent, void* arg); + +bool CompressFileToBlob(const char* infile, const char* outfile, u32 sub_type = 0, int sector_size = 16384, + CompressCB callback = 0, void* arg = 0); +bool DecompressBlobToFile(const char* infile, const char* outfile, + CompressCB callback = 0, void* arg = 0); + +} // namespace + +#endif + diff --git a/Source/Core/DiscIO/Src/CompressedBlob.h b/Source/Core/DiscIO/Src/CompressedBlob.h index 1b953cbc42..d4714834d0 100644 --- a/Source/Core/DiscIO/Src/CompressedBlob.h +++ b/Source/Core/DiscIO/Src/CompressedBlob.h @@ -1,83 +1,83 @@ -// Copyright (C) 2003-2008 Dolphin Project.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 2.0.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License 2.0 for more details.
-
-// A copy of the GPL 2.0 should have been included with the program.
-// If not, see http://www.gnu.org/licenses/
-
-// Official SVN repository and contact information can be found at
-// http://code.google.com/p/dolphin-emu/
-
-
-// WARNING Code not big-endian safe.
-
-// To create new compressed BLOBs, use CompressFileToBlob.
-
-// File format
-// * Header
-// * [Block Pointers interleaved with block hashes (hash of decompressed data)]
-// * [Data]
-
-#ifndef COMPRESSED_BLOB_H_
-#define COMPRESSED_BLOB_H_
-
-#include <stdio.h>
-#include "Blob.h"
-
-namespace DiscIO
-{
-
-bool IsCompressedBlob(const char* filename);
-
-const u32 kBlobCookie = 0xB10BC001;
-
-// A blob file structure:
-// BlobHeader
-// u64 offsetsToBlocks[n], top bit specifies whether the block is compressed, or not.
-// compressed data
-
-// Blocks that won't compress to less than 97% of the original size are stored as-is.
-struct CompressedBlobHeader // 32 bytes
-{
- u32 magic_cookie; //0xB10BB10B
- u32 sub_type; // gc image, whatever
- u64 compressed_data_size;
- u64 data_size;
- u32 block_size;
- u32 num_blocks;
-};
-
-class CompressedBlobReader : public SectorReader
-{
-private:
- CompressedBlobHeader header;
- u64 *block_pointers;
- u32 *hashes;
- int data_offset;
- FILE *file;
- u64 file_size;
- u8 *zlib_buffer;
- int zlib_buffer_size;
-
- CompressedBlobReader(const char *filename);
-
-public:
- static CompressedBlobReader* Create(const char *filename);
- ~CompressedBlobReader();
- const CompressedBlobHeader &GetHeader() const { return header; }
- u64 GetDataSize() const { return header.data_size; }
- u64 GetRawSize() const { return file_size; }
- u64 GetBlockCompressedSize(u64 block_num) const;
- void GetBlock(u64 block_num, u8 *out_ptr);
-};
-
-} // namespace
-
-#endif // COMPRESSED_BLOB_H_
+// Copyright (C) 2003-2008 Dolphin Project. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 2.0. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License 2.0 for more details. + +// A copy of the GPL 2.0 should have been included with the program. +// If not, see http://www.gnu.org/licenses/ + +// Official SVN repository and contact information can be found at +// http://code.google.com/p/dolphin-emu/ + + +// WARNING Code not big-endian safe. + +// To create new compressed BLOBs, use CompressFileToBlob. + +// File format +// * Header +// * [Block Pointers interleaved with block hashes (hash of decompressed data)] +// * [Data] + +#ifndef COMPRESSED_BLOB_H_ +#define COMPRESSED_BLOB_H_ + +#include <stdio.h> +#include "Blob.h" + +namespace DiscIO +{ + +bool IsCompressedBlob(const char* filename); + +const u32 kBlobCookie = 0xB10BC001; + +// A blob file structure: +// BlobHeader +// u64 offsetsToBlocks[n], top bit specifies whether the block is compressed, or not. +// compressed data + +// Blocks that won't compress to less than 97% of the original size are stored as-is. +struct CompressedBlobHeader // 32 bytes +{ + u32 magic_cookie; //0xB10BB10B + u32 sub_type; // gc image, whatever + u64 compressed_data_size; + u64 data_size; + u32 block_size; + u32 num_blocks; +}; + +class CompressedBlobReader : public SectorReader +{ +private: + CompressedBlobHeader header; + u64 *block_pointers; + u32 *hashes; + int data_offset; + FILE *file; + u64 file_size; + u8 *zlib_buffer; + int zlib_buffer_size; + + CompressedBlobReader(const char *filename); + +public: + static CompressedBlobReader* Create(const char *filename); + ~CompressedBlobReader(); + const CompressedBlobHeader &GetHeader() const { return header; } + u64 GetDataSize() const { return header.data_size; } + u64 GetRawSize() const { return file_size; } + u64 GetBlockCompressedSize(u64 block_num) const; + void GetBlock(u64 block_num, u8 *out_ptr); +}; + +} // namespace + +#endif // COMPRESSED_BLOB_H_ diff --git a/Source/Core/DiscIO/Src/DriveBlob.h b/Source/Core/DiscIO/Src/DriveBlob.h index 89de954e21..46154fe2fd 100644 --- a/Source/Core/DiscIO/Src/DriveBlob.h +++ b/Source/Core/DiscIO/Src/DriveBlob.h @@ -1,60 +1,60 @@ -// Copyright (C) 2003-2008 Dolphin Project.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 2.0.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License 2.0 for more details.
-
-// A copy of the GPL 2.0 should have been included with the program.
-// If not, see http://www.gnu.org/licenses/
-
-// Official SVN repository and contact information can be found at
-// http://code.google.com/p/dolphin-emu/
-
-#ifndef _DRIVE_BLOB_H
-#define _DRIVE_BLOB_H
-
-#include "Blob.h"
-
-#ifdef _WIN32
-#include <windows.h>
-#endif
-
-namespace DiscIO
-{
-
-#ifdef _WIN32
-class DriveReader : public SectorReader
-{
- HANDLE hDisc;
-
-private:
- DriveReader(const char *drive) {
- /*
- char path[MAX_PATH];
- strncpy(path, drive, 3);
- path[2] = 0;
- sprintf(path, "\\\\.\\%s", drive);
- hDisc = CreateFile(path, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
- SetSectorSize(2048);
- */
- }
-
-public:
- static DriveReader *Create(const char *drive) {
- return NULL;// new DriveReader(drive);
- }
-
-};
-
-#endif
-
-
-
-} // namespace
-
-#endif // _DRIVE_BLOB_H
+// Copyright (C) 2003-2008 Dolphin Project. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 2.0. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License 2.0 for more details. + +// A copy of the GPL 2.0 should have been included with the program. +// If not, see http://www.gnu.org/licenses/ + +// Official SVN repository and contact information can be found at +// http://code.google.com/p/dolphin-emu/ + +#ifndef _DRIVE_BLOB_H +#define _DRIVE_BLOB_H + +#include "Blob.h" + +#ifdef _WIN32 +#include <windows.h> +#endif + +namespace DiscIO +{ + +#ifdef _WIN32 +class DriveReader : public SectorReader +{ + HANDLE hDisc; + +private: + DriveReader(const char *drive) { + /* + char path[MAX_PATH]; + strncpy(path, drive, 3); + path[2] = 0; + sprintf(path, "\\\\.\\%s", drive); + hDisc = CreateFile(path, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); + SetSectorSize(2048); + */ + } + +public: + static DriveReader *Create(const char *drive) { + return NULL;// new DriveReader(drive); + } + +}; + +#endif + + + +} // namespace + +#endif // _DRIVE_BLOB_H diff --git a/Source/Core/DiscIO/Src/FileBlob.h b/Source/Core/DiscIO/Src/FileBlob.h index f704608ba1..e7888d31d1 100644 --- a/Source/Core/DiscIO/Src/FileBlob.h +++ b/Source/Core/DiscIO/Src/FileBlob.h @@ -1,53 +1,53 @@ -// Copyright (C) 2003-2008 Dolphin Project.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 2.0.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License 2.0 for more details.
-
-// A copy of the GPL 2.0 should have been included with the program.
-// If not, see http://www.gnu.org/licenses/
-
-// Official SVN repository and contact information can be found at
-// http://code.google.com/p/dolphin-emu/
-
-#ifndef _FILE_BLOB_H
-#define _FILE_BLOB_H
-
-#include "Blob.h"
-
-#ifdef _WIN32
-#include <windows.h>
-#else
-#include <cstdio>
-#endif
-
-namespace DiscIO
-{
-
-class PlainFileReader : public IBlobReader
-{
-#ifdef _WIN32
- HANDLE hFile;
- PlainFileReader(HANDLE hFile_);
-#else
- FILE* file_;
- PlainFileReader(FILE* file__);
-#endif
- s64 size;
-
-public:
- static PlainFileReader* Create(const char* filename);
- ~PlainFileReader();
- u64 GetDataSize() const { return size; }
- u64 GetRawSize() const { return size; }
- bool Read(u64 offset, u64 nbytes, u8* out_ptr);
-};
-
-} // namespace
-
-#endif // _FILE_BLOB_H
+// Copyright (C) 2003-2008 Dolphin Project. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 2.0. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License 2.0 for more details. + +// A copy of the GPL 2.0 should have been included with the program. +// If not, see http://www.gnu.org/licenses/ + +// Official SVN repository and contact information can be found at +// http://code.google.com/p/dolphin-emu/ + +#ifndef _FILE_BLOB_H +#define _FILE_BLOB_H + +#include "Blob.h" + +#ifdef _WIN32 +#include <windows.h> +#else +#include <cstdio> +#endif + +namespace DiscIO +{ + +class PlainFileReader : public IBlobReader +{ +#ifdef _WIN32 + HANDLE hFile; + PlainFileReader(HANDLE hFile_); +#else + FILE* file_; + PlainFileReader(FILE* file__); +#endif + s64 size; + +public: + static PlainFileReader* Create(const char* filename); + ~PlainFileReader(); + u64 GetDataSize() const { return size; } + u64 GetRawSize() const { return size; } + bool Read(u64 offset, u64 nbytes, u8* out_ptr); +}; + +} // namespace + +#endif // _FILE_BLOB_H diff --git a/Source/Core/DiscIO/Src/FileHandlerARC.h b/Source/Core/DiscIO/Src/FileHandlerARC.h index 0dccc0ce5f..b58acb958d 100644 --- a/Source/Core/DiscIO/Src/FileHandlerARC.h +++ b/Source/Core/DiscIO/Src/FileHandlerARC.h @@ -1,66 +1,66 @@ -// Copyright (C) 2003-2008 Dolphin Project.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 2.0.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License 2.0 for more details.
-
-// A copy of the GPL 2.0 should have been included with the program.
-// If not, see http://www.gnu.org/licenses/
-
-// Official SVN repository and contact information can be found at
-// http://code.google.com/p/dolphin-emu/
-
-#ifndef _ARC_FILE_H
-#define _ARC_FILE_H
-
-#include <string>
-#include <vector>
-
-#include "Common.h"
-#include "Filesystem.h"
-
-namespace DiscIO
-{
-class CARCFile
-{
- public:
-
- CARCFile(const u8* _pBuffer, size_t _BufferSize);
-
- virtual ~CARCFile();
-
- bool IsInitialized();
-
- size_t GetFileSize(const std::string& _rFullPath);
-
- size_t ReadFile(const std::string& _rFullPath, u8* _pBuffer, size_t _MaxBufferSize);
-
- bool ExportFile(const std::string& _rFullPath, const std::string& _rExportFilename);
-
- bool ExportAllFiles(const std::string& _rFullPath);
-
-
- private:
-
- u8* m_pBuffer;
-
- bool m_Initialized;
-
- typedef std::vector<SFileInfo>CFileInfoVector;
- CFileInfoVector m_FileInfoVector;
-
- bool ParseBuffer();
-
- size_t BuildFilenames(const size_t _FirstIndex, const size_t _LastIndex, const char* _szDirectory, const char* _szNameTable);
-
- const SFileInfo* FindFileInfo(std::string _rFullPath) const;
-};
-} // namespace
-
-#endif
-
+// Copyright (C) 2003-2008 Dolphin Project. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 2.0. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License 2.0 for more details. + +// A copy of the GPL 2.0 should have been included with the program. +// If not, see http://www.gnu.org/licenses/ + +// Official SVN repository and contact information can be found at +// http://code.google.com/p/dolphin-emu/ + +#ifndef _ARC_FILE_H +#define _ARC_FILE_H + +#include <string> +#include <vector> + +#include "Common.h" +#include "Filesystem.h" + +namespace DiscIO +{ +class CARCFile +{ + public: + + CARCFile(const u8* _pBuffer, size_t _BufferSize); + + virtual ~CARCFile(); + + bool IsInitialized(); + + size_t GetFileSize(const std::string& _rFullPath); + + size_t ReadFile(const std::string& _rFullPath, u8* _pBuffer, size_t _MaxBufferSize); + + bool ExportFile(const std::string& _rFullPath, const std::string& _rExportFilename); + + bool ExportAllFiles(const std::string& _rFullPath); + + + private: + + u8* m_pBuffer; + + bool m_Initialized; + + typedef std::vector<SFileInfo>CFileInfoVector; + CFileInfoVector m_FileInfoVector; + + bool ParseBuffer(); + + size_t BuildFilenames(const size_t _FirstIndex, const size_t _LastIndex, const char* _szDirectory, const char* _szNameTable); + + const SFileInfo* FindFileInfo(std::string _rFullPath) const; +}; +} // namespace + +#endif + diff --git a/Source/Core/DiscIO/Src/FileSystemGCWii.h b/Source/Core/DiscIO/Src/FileSystemGCWii.h index ababa05b86..3cb1359c01 100644 --- a/Source/Core/DiscIO/Src/FileSystemGCWii.h +++ b/Source/Core/DiscIO/Src/FileSystemGCWii.h @@ -1,57 +1,57 @@ -// Copyright (C) 2003-2008 Dolphin Project.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 2.0.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License 2.0 for more details.
-
-// A copy of the GPL 2.0 should have been included with the program.
-// If not, see http://www.gnu.org/licenses/
-
-// Official SVN repository and contact information can be found at
-// http://code.google.com/p/dolphin-emu/
-
-#ifndef _FILESYSTEM_GC_WII_H
-#define _FILESYSTEM_GC_WII_H
-
-#include <vector>
-
-#include "Filesystem.h"
-
-namespace DiscIO
-{
-
-class CFileSystemGCWii : public IFileSystem
-{
-public:
- CFileSystemGCWii(const IVolume *_rVolume);
- virtual ~CFileSystemGCWii();
- virtual bool IsInitialized() const;
- virtual u64 GetFileSize(const char* _rFullPath) const;
- virtual const char* GetFileName(u64 _Address) const;
- virtual u64 ReadFile(const char* _rFullPath, u8* _pBuffer, size_t _MaxBufferSize) const;
- virtual bool ExportFile(const char* _rFullPath, const char* _rExportFilename) const;
- virtual bool ExportAllFiles(const char* _rFullPath) const;
-
-
-private:
- std::vector <SFileInfo> m_FileInfoVector;
-
- bool m_Initialized;
- u32 m_OffsetShift; // WII offsets are all shifted
- u32 Read32(u64 _Offset) const;
- virtual size_t GetFileList(std::vector<const SFileInfo *> &_rFilenames) const;
- void GetStringFromOffset(u64 _Offset, char* Filename) const;
- const SFileInfo* FindFileInfo(const char* _rFullPath) const;
- bool InitFileSystem();
- size_t BuildFilenames(const size_t _FirstIndex, const size_t _LastIndex, const char* _szDirectory, u64 _NameTableOffset);
-};
-
-} // namespace
-
-#endif
-
+// Copyright (C) 2003-2008 Dolphin Project. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 2.0. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License 2.0 for more details. + +// A copy of the GPL 2.0 should have been included with the program. +// If not, see http://www.gnu.org/licenses/ + +// Official SVN repository and contact information can be found at +// http://code.google.com/p/dolphin-emu/ + +#ifndef _FILESYSTEM_GC_WII_H +#define _FILESYSTEM_GC_WII_H + +#include <vector> + +#include "Filesystem.h" + +namespace DiscIO +{ + +class CFileSystemGCWii : public IFileSystem +{ +public: + CFileSystemGCWii(const IVolume *_rVolume); + virtual ~CFileSystemGCWii(); + virtual bool IsInitialized() const; + virtual u64 GetFileSize(const char* _rFullPath) const; + virtual const char* GetFileName(u64 _Address) const; + virtual u64 ReadFile(const char* _rFullPath, u8* _pBuffer, size_t _MaxBufferSize) const; + virtual bool ExportFile(const char* _rFullPath, const char* _rExportFilename) const; + virtual bool ExportAllFiles(const char* _rFullPath) const; + + +private: + std::vector <SFileInfo> m_FileInfoVector; + + bool m_Initialized; + u32 m_OffsetShift; // WII offsets are all shifted + u32 Read32(u64 _Offset) const; + virtual size_t GetFileList(std::vector<const SFileInfo *> &_rFilenames) const; + void GetStringFromOffset(u64 _Offset, char* Filename) const; + const SFileInfo* FindFileInfo(const char* _rFullPath) const; + bool InitFileSystem(); + size_t BuildFilenames(const size_t _FirstIndex, const size_t _LastIndex, const char* _szDirectory, u64 _NameTableOffset); +}; + +} // namespace + +#endif + diff --git a/Source/Core/DiscIO/Src/Filesystem.h b/Source/Core/DiscIO/Src/Filesystem.h index aabccfba98..b8be5649a8 100644 --- a/Source/Core/DiscIO/Src/Filesystem.h +++ b/Source/Core/DiscIO/Src/Filesystem.h @@ -1,69 +1,69 @@ -// Copyright (C) 2003-2008 Dolphin Project.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 2.0.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License 2.0 for more details.
-
-// A copy of the GPL 2.0 should have been included with the program.
-// If not, see http://www.gnu.org/licenses/
-
-// Official SVN repository and contact information can be found at
-// http://code.google.com/p/dolphin-emu/
-
-#ifndef _FILESYSTEM_H
-#define _FILESYSTEM_H
-
-#include "Volume.h"
-
-namespace DiscIO
-{
-
-// file info of an FST entry
-struct SFileInfo
-{
- u64 m_NameOffset;
- u64 m_Offset;
- u64 m_FileSize;
- char m_FullPath[512];
-
- bool IsDirectory() const { return (m_NameOffset & 0xFF000000) != 0 ? true : false; }
-
- SFileInfo() : m_NameOffset(0), m_Offset(0), m_FileSize(0) {
- memset(m_FullPath, 0, sizeof(m_FullPath));
- }
-
- SFileInfo(const SFileInfo &rhs) : m_NameOffset(rhs.m_NameOffset),
- m_Offset(rhs.m_Offset), m_FileSize(rhs.m_FileSize) {
- strcpy(m_FullPath, rhs.m_FullPath);
- }
-};
-
-class IFileSystem
-{
-public:
- IFileSystem(const IVolume *_rVolume);
-
- virtual ~IFileSystem();
- virtual bool IsInitialized() const = 0;
- virtual size_t GetFileList(std::vector<const SFileInfo *> &_rFilenames) const = 0;
- virtual u64 GetFileSize(const char* _rFullPath) const = 0;
- virtual u64 ReadFile(const char* _rFullPath, u8* _pBuffer, size_t _MaxBufferSize) const = 0;
- virtual bool ExportFile(const char* _rFullPath, const char* _rExportFilename) const = 0;
- virtual bool ExportAllFiles(const char* _rFullPath) const = 0;
- virtual const char* GetFileName(u64 _Address) const = 0;
-
- virtual const IVolume *GetVolume() const { return m_rVolume; }
-protected:
- const IVolume *m_rVolume;
-};
-
-IFileSystem* CreateFileSystem(const IVolume *_rVolume);
-
-} // namespace
-
-#endif
+// Copyright (C) 2003-2008 Dolphin Project. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 2.0. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License 2.0 for more details. + +// A copy of the GPL 2.0 should have been included with the program. +// If not, see http://www.gnu.org/licenses/ + +// Official SVN repository and contact information can be found at +// http://code.google.com/p/dolphin-emu/ + +#ifndef _FILESYSTEM_H +#define _FILESYSTEM_H + +#include "Volume.h" + +namespace DiscIO +{ + +// file info of an FST entry +struct SFileInfo +{ + u64 m_NameOffset; + u64 m_Offset; + u64 m_FileSize; + char m_FullPath[512]; + + bool IsDirectory() const { return (m_NameOffset & 0xFF000000) != 0 ? true : false; } + + SFileInfo() : m_NameOffset(0), m_Offset(0), m_FileSize(0) { + memset(m_FullPath, 0, sizeof(m_FullPath)); + } + + SFileInfo(const SFileInfo &rhs) : m_NameOffset(rhs.m_NameOffset), + m_Offset(rhs.m_Offset), m_FileSize(rhs.m_FileSize) { + strcpy(m_FullPath, rhs.m_FullPath); + } +}; + +class IFileSystem +{ +public: + IFileSystem(const IVolume *_rVolume); + + virtual ~IFileSystem(); + virtual bool IsInitialized() const = 0; + virtual size_t GetFileList(std::vector<const SFileInfo *> &_rFilenames) const = 0; + virtual u64 GetFileSize(const char* _rFullPath) const = 0; + virtual u64 ReadFile(const char* _rFullPath, u8* _pBuffer, size_t _MaxBufferSize) const = 0; + virtual bool ExportFile(const char* _rFullPath, const char* _rExportFilename) const = 0; + virtual bool ExportAllFiles(const char* _rFullPath) const = 0; + virtual const char* GetFileName(u64 _Address) const = 0; + + virtual const IVolume *GetVolume() const { return m_rVolume; } +protected: + const IVolume *m_rVolume; +}; + +IFileSystem* CreateFileSystem(const IVolume *_rVolume); + +} // namespace + +#endif diff --git a/Source/Core/DiscIO/Src/Volume.h b/Source/Core/DiscIO/Src/Volume.h index 0fe201b8ba..1f3852a5be 100644 --- a/Source/Core/DiscIO/Src/Volume.h +++ b/Source/Core/DiscIO/Src/Volume.h @@ -1,64 +1,64 @@ -// Copyright (C) 2003-2008 Dolphin Project.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 2.0.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License 2.0 for more details.
-
-// A copy of the GPL 2.0 should have been included with the program.
-// If not, see http://www.gnu.org/licenses/
-
-// Official SVN repository and contact information can be found at
-// http://code.google.com/p/dolphin-emu/
-
-#ifndef _VOLUME_H
-#define _VOLUME_H
-
-#include <string>
-#include <vector>
-
-#include "Common.h"
-
-namespace DiscIO
-{
-class IVolume
-{
- public:
-
- IVolume()
- {}
-
-
- virtual ~IVolume()
- {}
-
-
- virtual bool Read(u64 _Offset, u64 _Length, u8* _pBuffer) const = 0;
- virtual std::string GetUniqueID() const = 0;
- virtual std::string GetMakerID() const = 0;
- virtual std::string GetName() const = 0;
- virtual u32 GetFSTSize() const = 0;
- virtual std::string GetApploaderDate() const = 0;
-
-
- enum ECountry
- {
- COUNTRY_EUROPE = 0,
- COUNTRY_FRANCE = 1,
- COUNTRY_USA = 2,
- COUNTRY_JAP,
- COUNTRY_UNKNOWN,
- NUMBER_OF_COUNTRIES
- };
-
- virtual ECountry GetCountry() const = 0;
- virtual u64 GetSize() const = 0;
-};
-} // namespace
-
-#endif
-
+// Copyright (C) 2003-2008 Dolphin Project. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 2.0. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License 2.0 for more details. + +// A copy of the GPL 2.0 should have been included with the program. +// If not, see http://www.gnu.org/licenses/ + +// Official SVN repository and contact information can be found at +// http://code.google.com/p/dolphin-emu/ + +#ifndef _VOLUME_H +#define _VOLUME_H + +#include <string> +#include <vector> + +#include "Common.h" + +namespace DiscIO +{ +class IVolume +{ + public: + + IVolume() + {} + + + virtual ~IVolume() + {} + + + virtual bool Read(u64 _Offset, u64 _Length, u8* _pBuffer) const = 0; + virtual std::string GetUniqueID() const = 0; + virtual std::string GetMakerID() const = 0; + virtual std::string GetName() const = 0; + virtual u32 GetFSTSize() const = 0; + virtual std::string GetApploaderDate() const = 0; + + + enum ECountry + { + COUNTRY_EUROPE = 0, + COUNTRY_FRANCE = 1, + COUNTRY_USA = 2, + COUNTRY_JAP, + COUNTRY_UNKNOWN, + NUMBER_OF_COUNTRIES + }; + + virtual ECountry GetCountry() const = 0; + virtual u64 GetSize() const = 0; +}; +} // namespace + +#endif + diff --git a/Source/Core/DiscIO/Src/VolumeCreator.h b/Source/Core/DiscIO/Src/VolumeCreator.h index cd67706dec..6366bb1811 100644 --- a/Source/Core/DiscIO/Src/VolumeCreator.h +++ b/Source/Core/DiscIO/Src/VolumeCreator.h @@ -1,31 +1,31 @@ -// Copyright (C) 2003-2008 Dolphin Project.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 2.0.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License 2.0 for more details.
-
-// A copy of the GPL 2.0 should have been included with the program.
-// If not, see http://www.gnu.org/licenses/
-
-// Official SVN repository and contact information can be found at
-// http://code.google.com/p/dolphin-emu/
-
-#ifndef _VOLUME_CREATOR_H
-#define _VOLUME_CREATOR_H
-
-#include "Volume.h"
-
-namespace DiscIO
-{
-IVolume* CreateVolumeFromFilename(const std::string& _rFilename);
-IVolume* CreateVolumeFromDirectory(const std::string& _rDirectory, bool _bIsWii);
-bool IsVolumeWiiDisc(const IVolume *_rVolume);
-} // namespace
-
-#endif
-
+// Copyright (C) 2003-2008 Dolphin Project. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 2.0. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License 2.0 for more details. + +// A copy of the GPL 2.0 should have been included with the program. +// If not, see http://www.gnu.org/licenses/ + +// Official SVN repository and contact information can be found at +// http://code.google.com/p/dolphin-emu/ + +#ifndef _VOLUME_CREATOR_H +#define _VOLUME_CREATOR_H + +#include "Volume.h" + +namespace DiscIO +{ +IVolume* CreateVolumeFromFilename(const std::string& _rFilename); +IVolume* CreateVolumeFromDirectory(const std::string& _rDirectory, bool _bIsWii); +bool IsVolumeWiiDisc(const IVolume *_rVolume); +} // namespace + +#endif + diff --git a/Source/Core/DiscIO/Src/VolumeDirectory.h b/Source/Core/DiscIO/Src/VolumeDirectory.h index 1466b77b43..1cc0931031 100644 --- a/Source/Core/DiscIO/Src/VolumeDirectory.h +++ b/Source/Core/DiscIO/Src/VolumeDirectory.h @@ -1,106 +1,106 @@ -// Copyright (C) 2003-2008 Dolphin Project.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 2.0.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License 2.0 for more details.
-
-// A copy of the GPL 2.0 should have been included with the program.
-// If not, see http://www.gnu.org/licenses/
-
-// Official SVN repository and contact information can be found at
-// http://code.google.com/p/dolphin-emu/
-
-#pragma once
-
-#include "Volume.h"
-#include "Common.h"
-#include "FileUtil.h"
-#include <string>
-#include <map>
-
-//
-// --- this volume type is used for reading files directly from the hard drive ---
-//
-
-namespace DiscIO
-{
-
-class CVolumeDirectory
- : public IVolume
-{
- public:
-
- CVolumeDirectory(const std::string& _rDirectory, bool _bIsWii);
-
- ~CVolumeDirectory();
-
- static bool IsValidDirectory(const std::string& _rDirectory);
-
- bool Read(u64 _Offset, u64 _Length, u8* _pBuffer) const;
-
- std::string GetUniqueID() const;
- void SetUniqueID(std::string _ID);
-
- std::string GetMakerID() const;
-
- std::string GetName() const;
- void SetName(std::string);
-
- u32 GetFSTSize() const;
-
- std::string GetApploaderDate() const;
-
- ECountry GetCountry() const;
-
- u64 GetSize() const;
-
- void BuildFST();
-
- private:
- static std::string ExtractDirectoryName(const std::string& _rDirectory);
-
- void SetDiskTypeWii();
- void SetDiskTypeGC();
-
- // writing to read buffer
- void WriteToBuffer(u64 _SrcStartAddress, u64 _SrcLength, u8* _Src,
- u64& _Address, u64& _Length, u8*& _pBuffer) const;
-
- void PadToAddress(u64 _StartAddress, u64& _Address, u64& _Length, u8*& _pBuffer) const;
-
- void Write32(u32 data, u32 offset, u8* buffer);
-
- // FST creation
- void WriteEntryData(u32& entryOffset, u8 type, u32 nameOffset, u64 dataOffset, u32 length);
- void WriteEntryName(u32& nameOffset, const std::string& name);
- void WriteEntry(const File::FSTEntry& entry, u32& fstOffset, u32& nameOffset, u64& dataOffset, u32 parentEntryNum);
-
- // returns number of entries found in _Directory
- u32 AddDirectoryEntries(const std::string& _Directory, File::FSTEntry& parentEntry);
-
- std::string m_rootDirectory;
-
- std::map<u64, std::string> m_virtualDisk;
-
- u32 m_totalNameSize;
-
- // gc has no shift, wii has 2 bit shift
- u32 m_addressShift;
-
- // first address on disk containing file data
- u64 m_dataStartAddress;
-
- u64 m_fstNameOffset;
-
- u64 m_fstSize;
-
- u8* m_FSTData;
- u8* m_diskHeader;
-};
-
-} // namespace
+// Copyright (C) 2003-2008 Dolphin Project. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 2.0. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License 2.0 for more details. + +// A copy of the GPL 2.0 should have been included with the program. +// If not, see http://www.gnu.org/licenses/ + +// Official SVN repository and contact information can be found at +// http://code.google.com/p/dolphin-emu/ + +#pragma once + +#include "Volume.h" +#include "Common.h" +#include "FileUtil.h" +#include <string> +#include <map> + +// +// --- this volume type is used for reading files directly from the hard drive --- +// + +namespace DiscIO +{ + +class CVolumeDirectory + : public IVolume +{ + public: + + CVolumeDirectory(const std::string& _rDirectory, bool _bIsWii); + + ~CVolumeDirectory(); + + static bool IsValidDirectory(const std::string& _rDirectory); + + bool Read(u64 _Offset, u64 _Length, u8* _pBuffer) const; + + std::string GetUniqueID() const; + void SetUniqueID(std::string _ID); + + std::string GetMakerID() const; + + std::string GetName() const; + void SetName(std::string); + + u32 GetFSTSize() const; + + std::string GetApploaderDate() const; + + ECountry GetCountry() const; + + u64 GetSize() const; + + void BuildFST(); + + private: + static std::string ExtractDirectoryName(const std::string& _rDirectory); + + void SetDiskTypeWii(); + void SetDiskTypeGC(); + + // writing to read buffer + void WriteToBuffer(u64 _SrcStartAddress, u64 _SrcLength, u8* _Src, + u64& _Address, u64& _Length, u8*& _pBuffer) const; + + void PadToAddress(u64 _StartAddress, u64& _Address, u64& _Length, u8*& _pBuffer) const; + + void Write32(u32 data, u32 offset, u8* buffer); + + // FST creation + void WriteEntryData(u32& entryOffset, u8 type, u32 nameOffset, u64 dataOffset, u32 length); + void WriteEntryName(u32& nameOffset, const std::string& name); + void WriteEntry(const File::FSTEntry& entry, u32& fstOffset, u32& nameOffset, u64& dataOffset, u32 parentEntryNum); + + // returns number of entries found in _Directory + u32 AddDirectoryEntries(const std::string& _Directory, File::FSTEntry& parentEntry); + + std::string m_rootDirectory; + + std::map<u64, std::string> m_virtualDisk; + + u32 m_totalNameSize; + + // gc has no shift, wii has 2 bit shift + u32 m_addressShift; + + // first address on disk containing file data + u64 m_dataStartAddress; + + u64 m_fstNameOffset; + + u64 m_fstSize; + + u8* m_FSTData; + u8* m_diskHeader; +}; + +} // namespace diff --git a/Source/Core/DiscIO/Src/VolumeGC.h b/Source/Core/DiscIO/Src/VolumeGC.h index e4f3b2f1fc..33452c39f7 100644 --- a/Source/Core/DiscIO/Src/VolumeGC.h +++ b/Source/Core/DiscIO/Src/VolumeGC.h @@ -1,45 +1,45 @@ -// Copyright (C) 2003-2008 Dolphin Project.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 2.0.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License 2.0 for more details.
-
-// A copy of the GPL 2.0 should have been included with the program.
-// If not, see http://www.gnu.org/licenses/
-
-// Official SVN repository and contact information can be found at
-// http://code.google.com/p/dolphin-emu/
-
-#pragma once
-
-#include "Volume.h"
-#include "Blob.h"
-
-// --- this volume type is used for GC disc images ---
-
-namespace DiscIO
-{
-class CVolumeGC : public IVolume
-{
-public:
- CVolumeGC(IBlobReader* _pReader);
- ~CVolumeGC();
- bool Read(u64 _Offset, u64 _Length, u8* _pBuffer) const;
- std::string GetUniqueID() const;
- std::string GetMakerID() const;
- std::string GetName() const;
- u32 GetFSTSize() const;
- std::string GetApploaderDate() const;
- ECountry GetCountry() const;
- u64 GetSize() const;
-
-private:
- IBlobReader* m_pReader;
-};
-
-} // namespace
+// Copyright (C) 2003-2008 Dolphin Project. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 2.0. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License 2.0 for more details. + +// A copy of the GPL 2.0 should have been included with the program. +// If not, see http://www.gnu.org/licenses/ + +// Official SVN repository and contact information can be found at +// http://code.google.com/p/dolphin-emu/ + +#pragma once + +#include "Volume.h" +#include "Blob.h" + +// --- this volume type is used for GC disc images --- + +namespace DiscIO +{ +class CVolumeGC : public IVolume +{ +public: + CVolumeGC(IBlobReader* _pReader); + ~CVolumeGC(); + bool Read(u64 _Offset, u64 _Length, u8* _pBuffer) const; + std::string GetUniqueID() const; + std::string GetMakerID() const; + std::string GetName() const; + u32 GetFSTSize() const; + std::string GetApploaderDate() const; + ECountry GetCountry() const; + u64 GetSize() const; + +private: + IBlobReader* m_pReader; +}; + +} // namespace diff --git a/Source/Core/DiscIO/Src/VolumeWiiCrypted.h b/Source/Core/DiscIO/Src/VolumeWiiCrypted.h index 4d2aa0ab90..696d609114 100644 --- a/Source/Core/DiscIO/Src/VolumeWiiCrypted.h +++ b/Source/Core/DiscIO/Src/VolumeWiiCrypted.h @@ -1,58 +1,58 @@ -// Copyright (C) 2003-2008 Dolphin Project.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 2.0.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License 2.0 for more details.
-
-// A copy of the GPL 2.0 should have been included with the program.
-// If not, see http://www.gnu.org/licenses/
-
-// Official SVN repository and contact information can be found at
-// http://code.google.com/p/dolphin-emu/
-
-#ifndef _VOLUME_WII_CRYPTED
-#define _VOLUME_WII_CRYPTED
-
-#include "Volume.h"
-#include "Blob.h"
-#include "AES/aes.h"
-
-// --- this volume type is used for encrypted Wii images ---
-
-namespace DiscIO
-{
-class CVolumeWiiCrypted : public IVolume
-{
-public:
- CVolumeWiiCrypted(IBlobReader* _pReader, u64 _VolumeOffset, const unsigned char* _pVolumeKey);
- ~CVolumeWiiCrypted();
- bool Read(u64 _Offset, u64 _Length, u8* _pBuffer) const;
- std::string GetUniqueID() const;
- std::string GetMakerID() const;
- std::string GetName() const;
- u32 GetFSTSize() const;
- std::string GetApploaderDate() const;
- ECountry GetCountry() const;
- u64 GetSize() const;
-
-private:
- IBlobReader* m_pReader;
-
- u8* m_pBuffer;
- AES_KEY m_AES_KEY;
-
- u64 m_VolumeOffset;
-
- mutable u64 m_LastDecryptedBlockOffset;
- mutable unsigned char m_LastDecryptedBlock[0x8000];
-};
-
-} // namespace
-
-#endif
-
+// Copyright (C) 2003-2008 Dolphin Project. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 2.0. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License 2.0 for more details. + +// A copy of the GPL 2.0 should have been included with the program. +// If not, see http://www.gnu.org/licenses/ + +// Official SVN repository and contact information can be found at +// http://code.google.com/p/dolphin-emu/ + +#ifndef _VOLUME_WII_CRYPTED +#define _VOLUME_WII_CRYPTED + +#include "Volume.h" +#include "Blob.h" +#include "AES/aes.h" + +// --- this volume type is used for encrypted Wii images --- + +namespace DiscIO +{ +class CVolumeWiiCrypted : public IVolume +{ +public: + CVolumeWiiCrypted(IBlobReader* _pReader, u64 _VolumeOffset, const unsigned char* _pVolumeKey); + ~CVolumeWiiCrypted(); + bool Read(u64 _Offset, u64 _Length, u8* _pBuffer) const; + std::string GetUniqueID() const; + std::string GetMakerID() const; + std::string GetName() const; + u32 GetFSTSize() const; + std::string GetApploaderDate() const; + ECountry GetCountry() const; + u64 GetSize() const; + +private: + IBlobReader* m_pReader; + + u8* m_pBuffer; + AES_KEY m_AES_KEY; + + u64 m_VolumeOffset; + + mutable u64 m_LastDecryptedBlockOffset; + mutable unsigned char m_LastDecryptedBlock[0x8000]; +}; + +} // namespace + +#endif + diff --git a/Source/Core/DiscIO/Src/stdafx.h b/Source/Core/DiscIO/Src/stdafx.h index 531bd7ef53..2949974115 100644 --- a/Source/Core/DiscIO/Src/stdafx.h +++ b/Source/Core/DiscIO/Src/stdafx.h @@ -1,30 +1,30 @@ -// Copyright (C) 2003-2008 Dolphin Project.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 2.0.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License 2.0 for more details.
-
-// A copy of the GPL 2.0 should have been included with the program.
-// If not, see http://www.gnu.org/licenses/
-
-// Official SVN repository and contact information can be found at
-// http://code.google.com/p/dolphin-emu/
-
-#pragma once
-
-#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
-#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
-#endif
-
-#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
-
-#define _CRT_SECURE_NO_DEPRECATE
-#define _SCL_SECURE_NO_DEPRECATE
-
-
-// TODO: reference additional headers your program requires here
+// Copyright (C) 2003-2008 Dolphin Project. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 2.0. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License 2.0 for more details. + +// A copy of the GPL 2.0 should have been included with the program. +// If not, see http://www.gnu.org/licenses/ + +// Official SVN repository and contact information can be found at +// http://code.google.com/p/dolphin-emu/ + +#pragma once + +#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. +#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. +#endif + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers + +#define _CRT_SECURE_NO_DEPRECATE +#define _SCL_SECURE_NO_DEPRECATE + + +// TODO: reference additional headers your program requires here |
