Virtual files: use u64 for offset / size

This commit is contained in:
d0k3 2017-02-17 04:01:25 +01:00
parent 034564ef93
commit 1129c710d7
16 changed files with 30 additions and 30 deletions

View File

@ -176,7 +176,7 @@ u32 ReadCartSectors(u8* buffer, u32 sector, u32 count, CartData* cdata) {
return 0;
}
u32 ReadCartBytes(u8* buffer, u32 offset, u32 count, CartData* cdata) {
u32 ReadCartBytes(u8* buffer, u64 offset, u64 count, CartData* cdata) {
if (!(offset % 0x200) && !(count % 0x200)) { // aligned data -> simple case
// simple wrapper function for ReadCartSectors(...)
return ReadCartSectors(buffer, offset / 0x200, count / 0x200, cdata);
@ -203,7 +203,7 @@ u32 ReadCartBytes(u8* buffer, u32 offset, u32 count, CartData* cdata) {
}
}
u32 ReadCartPrivateHeader(u8* buffer, u32 offset, u32 count, CartData* cdata) {
u32 ReadCartPrivateHeader(u8* buffer, u64 offset, u64 count, CartData* cdata) {
if (!(cdata->cart_type & CART_CTR)) return 1;
if (offset < PRIV_HDR_SIZE) {
u8* priv_hdr = cdata->header + 0x4000;

View File

@ -23,5 +23,5 @@ typedef struct {
u32 GetCartName(char* name, CartData* cdata);
u32 InitCardRead(CartData* cdata);
u32 ReadCartSectors(u8* buffer, u32 sector, u32 count, CartData* cdata);
u32 ReadCartBytes(u8* buffer, u32 offset, u32 count, CartData* cdata);
u32 ReadCartPrivateHeader(u8* buffer, u32 offset, u32 count, CartData* cdata);
u32 ReadCartBytes(u8* buffer, u64 offset, u64 count, CartData* cdata);
u32 ReadCartPrivateHeader(u8* buffer, u64 offset, u64 count, CartData* cdata);

View File

@ -229,7 +229,7 @@ void CryptSector0x96(u8* buffer, bool encrypt)
ecb_decrypt((void*) buffer, (void*) buffer, 0x200 / AES_BLOCK_SIZE, mode);
}
int ReadNandBytes(u8* buffer, u32 offset, u32 count, u32 keyslot, u32 nand_src)
int ReadNandBytes(u8* buffer, u64 offset, u64 count, u32 keyslot, u32 nand_src)
{
if (!(offset % 0x200) && !(count % 0x200)) { // aligned data -> simple case
// simple wrapper function for ReadNandSectors(...)
@ -261,7 +261,7 @@ int ReadNandBytes(u8* buffer, u32 offset, u32 count, u32 keyslot, u32 nand_src)
}
}
int WriteNandBytes(const u8* buffer, u32 offset, u32 count, u32 keyslot, u32 nand_dst)
int WriteNandBytes(const u8* buffer, u64 offset, u64 count, u32 keyslot, u32 nand_dst)
{
if (!(offset % 0x200) && !(count % 0x200)) { // aligned data -> simple case
// simple wrapper function for WriteNandSectors(...)

View File

@ -41,8 +41,8 @@ bool CheckA9lh(void);
void CryptNand(u8* buffer, u32 sector, u32 count, u32 keyslot);
void CryptSector0x96(u8* buffer, bool encrypt);
int ReadNandBytes(u8* buffer, u32 offset, u32 count, u32 keyslot, u32 nand_src);
int WriteNandBytes(const u8* buffer, u32 offset, u32 count, u32 keyslot, u32 nand_dst);
int ReadNandBytes(u8* buffer, u64 offset, u64 count, u32 keyslot, u32 nand_src);
int WriteNandBytes(const u8* buffer, u64 offset, u64 count, u32 keyslot, u32 nand_dst);
int ReadNandSectors(u8* buffer, u32 sector, u32 count, u32 keyslot, u32 src);
int WriteNandSectors(const u8* buffer, u32 sector, u32 count, u32 keyslot, u32 dest);

View File

@ -53,7 +53,7 @@ bool ReadVCartDir(VirtualFile* vfile, VirtualDir* vdir) {
return false;
}
int ReadVCartFile(const VirtualFile* vfile, u8* buffer, u32 offset, u32 count) {
int ReadVCartFile(const VirtualFile* vfile, u8* buffer, u64 offset, u64 count) {
u32 foffset = vfile->offset + offset;
if (vfile->flags & VFLAG_PRIV_HDR)
return ReadCartPrivateHeader(buffer, foffset, count, cdata);

View File

@ -5,6 +5,6 @@
u32 InitVCartDrive(void);
bool ReadVCartDir(VirtualFile* vfile, VirtualDir* vdir);
int ReadVCartFile(const VirtualFile* vfile, u8* buffer, u32 offset, u32 count);
// int WriteVCartFile(const VirtualFile* vfile, const u8* buffer, u32 offset, u32 count); // no writes
int ReadVCartFile(const VirtualFile* vfile, u8* buffer, u64 offset, u64 count);
// int WriteVCartFile(const VirtualFile* vfile, const u8* buffer, u64 offset, u64 count); // no writes
u64 GetVCartDriveSize(void);

View File

@ -678,7 +678,7 @@ bool ReadVGameDir(VirtualFile* vfile, VirtualDir* vdir) {
return false;
}
int ReadVGameFile(const VirtualFile* vfile, u8* buffer, u32 offset, u32 count) {
int ReadVGameFile(const VirtualFile* vfile, u8* buffer, u64 offset, u64 count) {
u32 vfoffset = vfile->offset;
if (vfile->flags & VFLAG_LV3) {
RomFsLv3FileMeta* lv3file;

View File

@ -9,8 +9,8 @@ u32 CheckVGameDrive(void);
bool OpenVGameDir(VirtualDir* vdir, VirtualFile* ventry);
bool ReadVGameDir(VirtualFile* vfile, VirtualDir* vdir);
int ReadVGameFile(const VirtualFile* vfile, u8* buffer, u32 offset, u32 count);
// int WriteVGameFile(const VirtualFile* vfile, const u8* buffer, u32 offset, u32 count); // writing is not enabled
int ReadVGameFile(const VirtualFile* vfile, u8* buffer, u64 offset, u64 count);
// int WriteVGameFile(const VirtualFile* vfile, const u8* buffer, u64 offset, u64 count); // writing is not enabled
bool FindVirtualFileInLv3Dir(VirtualFile* vfile, const VirtualDir* vdir, const char* name);
bool GetVGameLv3Filename(char* name, const VirtualFile* vfile, u32 n_chars);

View File

@ -161,7 +161,7 @@ bool GetVirtualFilename(char* name, const VirtualFile* vfile, u32 n_chars) {
return true;
}
int ReadVirtualFile(const VirtualFile* vfile, u8* buffer, u32 offset, u32 count, u32* bytes_read) {
int ReadVirtualFile(const VirtualFile* vfile, u8* buffer, u64 offset, u64 count, u32* bytes_read) {
// basic check of offset / count
if (offset >= vfile->size)
return 0;
@ -184,7 +184,7 @@ int ReadVirtualFile(const VirtualFile* vfile, u8* buffer, u32 offset, u32 count,
return -1;
}
int WriteVirtualFile(const VirtualFile* vfile, const u8* buffer, u32 offset, u32 count, u32* bytes_written) {
int WriteVirtualFile(const VirtualFile* vfile, const u8* buffer, u64 offset, u64 count, u32* bytes_written) {
// basic check of offset / count
if (offset >= vfile->size)
return 0;

View File

@ -57,7 +57,7 @@ bool GetVirtualDirContents(DirStruct* contents, char* fpath, int fnsize, const c
bool GetVirtualFilename(char* name, const VirtualFile* vfile, u32 n_chars);
int ReadVirtualFile(const VirtualFile* vfile, u8* buffer, u32 offset, u32 count, u32* bytes_read);
int WriteVirtualFile(const VirtualFile* vfile, const u8* buffer, u32 offset, u32 count, u32* bytes_written);
int ReadVirtualFile(const VirtualFile* vfile, u8* buffer, u64 offset, u64 count, u32* bytes_read);
int WriteVirtualFile(const VirtualFile* vfile, const u8* buffer, u64 offset, u64 count, u32* bytes_written);
u64 GetVirtualDriveSize(const char* path);

View File

@ -41,13 +41,13 @@ bool ReadVMemDir(VirtualFile* vfile, VirtualDir* vdir) { // uses a generic vdir
return false;
}
int ReadVMemFile(const VirtualFile* vfile, u8* buffer, u32 offset, u32 count) {
int ReadVMemFile(const VirtualFile* vfile, u8* buffer, u64 offset, u64 count) {
u32 foffset = vfile->offset + offset;
memcpy(buffer, (u8*) foffset, count);
return 0;
}
int WriteVMemFile(const VirtualFile* vfile, const u8* buffer, u32 offset, u32 count) {
int WriteVMemFile(const VirtualFile* vfile, const u8* buffer, u64 offset, u64 count) {
u32 foffset = vfile->offset + offset;
memcpy((u8*) foffset, buffer, count);
return 0;

View File

@ -4,5 +4,5 @@
#include "virtual.h"
bool ReadVMemDir(VirtualFile* vfile, VirtualDir* vdir);
int ReadVMemFile(const VirtualFile* vfile, u8* buffer, u32 offset, u32 count);
int WriteVMemFile(const VirtualFile* vfile, const u8* buffer, u32 offset, u32 count);
int ReadVMemFile(const VirtualFile* vfile, u8* buffer, u64 offset, u64 count);
int WriteVMemFile(const VirtualFile* vfile, const u8* buffer, u64 offset, u64 count);

View File

@ -88,12 +88,12 @@ bool ReadVNandDir(VirtualFile* vfile, VirtualDir* vdir) { // uses a generic vdir
return false;
}
int ReadVNandFile(const VirtualFile* vfile, u8* buffer, u32 offset, u32 count) {
int ReadVNandFile(const VirtualFile* vfile, u8* buffer, u64 offset, u64 count) {
u32 nand_src = vfile->flags & (VRT_SYSNAND|VRT_EMUNAND|VRT_IMGNAND|VRT_XORPAD);
return ReadNandBytes(buffer, vfile->offset + offset, count, vfile->keyslot, nand_src);
}
int WriteVNandFile(const VirtualFile* vfile, const u8* buffer, u32 offset, u32 count) {
int WriteVNandFile(const VirtualFile* vfile, const u8* buffer, u64 offset, u64 count) {
u32 nand_dst = vfile->flags & (VRT_SYSNAND|VRT_EMUNAND|VRT_IMGNAND|VRT_XORPAD);
int res = WriteNandBytes(buffer, vfile->offset + offset, count, vfile->keyslot, nand_dst);
if ((res == 0) && (vfile->flags & VFLAG_GBA_VC)) res = FixAgbSaveCmac(nand_dst);

View File

@ -5,6 +5,6 @@
bool CheckVNandDrive(u32 nand_src);
bool ReadVNandDir(VirtualFile* vfile, VirtualDir* vdir);
int ReadVNandFile(const VirtualFile* vfile, u8* buffer, u32 offset, u32 count);
int WriteVNandFile(const VirtualFile* vfile, const u8* buffer, u32 offset, u32 count);
int ReadVNandFile(const VirtualFile* vfile, u8* buffer, u64 offset, u64 count);
int WriteVNandFile(const VirtualFile* vfile, const u8* buffer, u64 offset, u64 count);
u64 GetVNandDriveSize(u32 nand_src);

View File

@ -131,8 +131,8 @@ bool ReadVTickDbDir(VirtualFile* vfile, VirtualDir* vdir) {
return false;
}
int ReadVTickDbFile(const VirtualFile* vfile, u8* buffer, u32 offset, u32 count) {
u32 foffset = vfile->offset + offset;
int ReadVTickDbFile(const VirtualFile* vfile, u8* buffer, u64 offset, u64 count) {
u64 foffset = vfile->offset + offset;
return (ReadImageBytes(buffer, foffset, count) == 0) ? 0 : 1;
}

View File

@ -7,6 +7,6 @@ u32 InitVTickDbDrive(void);
u32 CheckVTickDbDrive(void);
bool ReadVTickDbDir(VirtualFile* vfile, VirtualDir* vdir);
int ReadVTickDbFile(const VirtualFile* vfile, u8* buffer, u32 offset, u32 count);
// int WriteVTickDbFile(const VirtualFile* vfile, const u8* buffer, u32 offset, u32 count); // no writing
int ReadVTickDbFile(const VirtualFile* vfile, u8* buffer, u64 offset, u64 count);
// int WriteVTickDbFile(const VirtualFile* vfile, const u8* buffer, u64 offset, u64 count); // no writing
u64 GetVTickDbDriveSize(void);