mirror of
https://github.com/d0k3/GodMode9.git
synced 2025-06-26 13:42:47 +00:00
Virtual files: use u64 for offset / size
This commit is contained in:
parent
034564ef93
commit
1129c710d7
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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(...)
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user