1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#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
|