#ifndef FILESYSTEM_H #define FILESYSTEM_H #include "gba/gba.h" typedef enum { FS_OPEN_READ = (1 << 0), FS_OPEN_WRITE = (1 << 1), FS_OPEN_APPEND = (1 << 2), } OpenMode; typedef struct File { // File index offset. u8 index; // The offset within the file. Must always be valid, and so the File struct // shouldn't be manaully modified unless we are sure we know what we are // doing. u16 offset; // The mode of this file (read/write/append). OpenMode mode; } File; typedef enum { FS_SEEK_SET, FS_SEEK_CUR, FS_SEEK_END, } SeekMode; void fs_init(void); File fs_open_file(char *name, OpenMode mode); u16 fs_file_size(File *file); int fs_seek(File *file, int offset, SeekMode mode); u16 fs_write(u8 *src, u16 n_bytes, File *file); u16 fs_read(u8 *dst, u16 n_bytes, File *file); #endif // FILESYSTEM_H