diff --git a/source/gamecart/gamecart.c b/source/gamecart/gamecart.c index 33fed5a..013b236 100644 --- a/source/gamecart/gamecart.c +++ b/source/gamecart/gamecart.c @@ -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; diff --git a/source/gamecart/gamecart.h b/source/gamecart/gamecart.h index 653bbb9..9283a34 100644 --- a/source/gamecart/gamecart.h +++ b/source/gamecart/gamecart.h @@ -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); diff --git a/source/nand/nand.c b/source/nand/nand.c index 015ac23..5af752b 100644 --- a/source/nand/nand.c +++ b/source/nand/nand.c @@ -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(...) diff --git a/source/nand/nand.h b/source/nand/nand.h index 94ad9a4..353c339 100644 --- a/source/nand/nand.h +++ b/source/nand/nand.h @@ -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); diff --git a/source/virtual/vcart.c b/source/virtual/vcart.c index ad644bb..f0178a4 100644 --- a/source/virtual/vcart.c +++ b/source/virtual/vcart.c @@ -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); diff --git a/source/virtual/vcart.h b/source/virtual/vcart.h index 23c5596..4d45272 100644 --- a/source/virtual/vcart.h +++ b/source/virtual/vcart.h @@ -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); diff --git a/source/virtual/vgame.c b/source/virtual/vgame.c index a468d21..ca15302 100644 --- a/source/virtual/vgame.c +++ b/source/virtual/vgame.c @@ -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; diff --git a/source/virtual/vgame.h b/source/virtual/vgame.h index c1c1e3b..4523800 100644 --- a/source/virtual/vgame.h +++ b/source/virtual/vgame.h @@ -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); diff --git a/source/virtual/virtual.c b/source/virtual/virtual.c index e0062fd..1ca9720 100644 --- a/source/virtual/virtual.c +++ b/source/virtual/virtual.c @@ -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; diff --git a/source/virtual/virtual.h b/source/virtual/virtual.h index 2bfea00..9a57f50 100644 --- a/source/virtual/virtual.h +++ b/source/virtual/virtual.h @@ -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); diff --git a/source/virtual/vmem.c b/source/virtual/vmem.c index a8f362a..4a56363 100644 --- a/source/virtual/vmem.c +++ b/source/virtual/vmem.c @@ -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; diff --git a/source/virtual/vmem.h b/source/virtual/vmem.h index 706669e..711b12f 100644 --- a/source/virtual/vmem.h +++ b/source/virtual/vmem.h @@ -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); diff --git a/source/virtual/vnand.c b/source/virtual/vnand.c index a7e9f18..62f66e5 100644 --- a/source/virtual/vnand.c +++ b/source/virtual/vnand.c @@ -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); diff --git a/source/virtual/vnand.h b/source/virtual/vnand.h index ae2ac44..8ab2756 100644 --- a/source/virtual/vnand.h +++ b/source/virtual/vnand.h @@ -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); diff --git a/source/virtual/vtickdb.c b/source/virtual/vtickdb.c index 6676d61..0719c40 100644 --- a/source/virtual/vtickdb.c +++ b/source/virtual/vtickdb.c @@ -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; } diff --git a/source/virtual/vtickdb.h b/source/virtual/vtickdb.h index 257f07f..f71576a 100644 --- a/source/virtual/vtickdb.h +++ b/source/virtual/vtickdb.h @@ -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);