mirror of
https://github.com/AxioDL/nod.git
synced 2025-12-20 18:29:18 +00:00
Initial Wii image generation (needs disc header)
This commit is contained in:
@@ -325,16 +325,14 @@ public:
|
||||
|
||||
DiscBuilderBase& m_parent;
|
||||
Kind m_kind;
|
||||
uint64_t m_offset;
|
||||
|
||||
char m_gameID[6];
|
||||
std::string m_gameTitle;
|
||||
uint32_t m_fstMemoryAddr;
|
||||
uint64_t m_dolOffset = 0;
|
||||
public:
|
||||
IPartitionBuilder(DiscBuilderBase& parent, Kind kind, uint64_t offset,
|
||||
const char gameID[6], const char* gameTitle, uint32_t fstMemoryAddr)
|
||||
: m_parent(parent), m_kind(kind), m_offset(offset), m_gameTitle(gameTitle), m_fstMemoryAddr(fstMemoryAddr)
|
||||
IPartitionBuilder(DiscBuilderBase& parent, Kind kind,
|
||||
const char gameID[6], const char* gameTitle)
|
||||
: m_parent(parent), m_kind(kind), m_gameTitle(gameTitle)
|
||||
{
|
||||
memcpy(m_gameID, gameID, 6);
|
||||
}
|
||||
@@ -353,9 +351,6 @@ public:
|
||||
: m_fileIO(std::move(fio)), m_progressCB(progressCB) {}
|
||||
|
||||
IFileIO& getFileIO() {return *m_fileIO;}
|
||||
|
||||
virtual bool buildFromDirectory(const SystemChar* dirIn, const SystemChar* dolIn,
|
||||
const SystemChar* apploaderIn)=0;
|
||||
};
|
||||
|
||||
using Partition = DiscBase::IPartition;
|
||||
|
||||
@@ -10,9 +10,16 @@ class DiscWii : public DiscBase
|
||||
{
|
||||
public:
|
||||
DiscWii(std::unique_ptr<IDiscIO>&& dio);
|
||||
DiscWii(const SystemChar* dataPath, const SystemChar* updatePath,
|
||||
const SystemChar* outPath, const char gameID[6], const char* gameTitle,
|
||||
bool korean=false);
|
||||
};
|
||||
|
||||
class DiscBuilderWii : public DiscBuilderBase
|
||||
{
|
||||
const SystemChar* m_outPath;
|
||||
public:
|
||||
DiscBuilderWii(const SystemChar* outPath, const char gameID[6], const char* gameTitle,
|
||||
std::function<void(size_t, const SystemString&, size_t)> progressCB);
|
||||
bool buildFromDirectory(const SystemChar* dirIn, const SystemChar* dolIn,
|
||||
const SystemChar* apploaderIn, const SystemChar* partHeadIn);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ public:
|
||||
virtual uint64_t copyFromDisc(struct IPartReadStream& discio, uint64_t length)=0;
|
||||
};
|
||||
virtual std::unique_ptr<IWriteStream> beginWriteStream() const=0;
|
||||
virtual std::unique_ptr<IWriteStream> beginWriteStream(size_t offset) const=0;
|
||||
virtual std::unique_ptr<IWriteStream> beginWriteStream(uint64_t offset) const=0;
|
||||
|
||||
struct IReadStream
|
||||
{
|
||||
@@ -31,7 +31,7 @@ public:
|
||||
virtual uint64_t copyToDisc(struct IPartWriteStream& discio, uint64_t length)=0;
|
||||
};
|
||||
virtual std::unique_ptr<IReadStream> beginReadStream() const=0;
|
||||
virtual std::unique_ptr<IReadStream> beginReadStream(size_t offset) const=0;
|
||||
virtual std::unique_ptr<IReadStream> beginReadStream(uint64_t offset) const=0;
|
||||
};
|
||||
|
||||
std::unique_ptr<IFileIO> NewFileIO(const SystemString& path);
|
||||
|
||||
45
include/NOD/sha1.h
Normal file
45
include/NOD/sha1.h
Normal file
@@ -0,0 +1,45 @@
|
||||
#ifndef __SHA1_H__
|
||||
#define __SHA1_H__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define SHA1_HASH_LENGTH 20
|
||||
#define SHA1_BLOCK_LENGTH 64
|
||||
|
||||
typedef struct sha1nfo {
|
||||
uint32_t buffer[SHA1_BLOCK_LENGTH/4];
|
||||
uint32_t state[SHA1_HASH_LENGTH/4];
|
||||
uint32_t byteCount;
|
||||
uint8_t bufferOffset;
|
||||
uint8_t keyBuffer[SHA1_BLOCK_LENGTH];
|
||||
uint8_t innerHash[SHA1_HASH_LENGTH];
|
||||
} sha1nfo;
|
||||
|
||||
/**
|
||||
*/
|
||||
void sha1_init(sha1nfo *s);
|
||||
/**
|
||||
*/
|
||||
void sha1_writebyte(sha1nfo *s, uint8_t data);
|
||||
/**
|
||||
*/
|
||||
void sha1_write(sha1nfo *s, const char *data, size_t len);
|
||||
/**
|
||||
*/
|
||||
uint8_t* sha1_result(sha1nfo *s);
|
||||
/**
|
||||
*/
|
||||
void sha1_initHmac(sha1nfo *s, const uint8_t* key, int keyLength);
|
||||
/**
|
||||
*/
|
||||
uint8_t* sha1_resultHmac(sha1nfo *s);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __SHA1_H__
|
||||
Reference in New Issue
Block a user