A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita
audio
rust
zig
deno
mpris
rockbox
mpd
1#ifndef __MEM_H__
2#define __MEM_H__
3
4#include "defs.h"
5
6#define MBC_NONE 0
7#define MBC_MBC1 1
8#define MBC_MBC2 2
9#define MBC_MBC3 4
10#define MBC_MBC5 8
11#define MBC_RUMBLE 16
12#define MBC_HUC1 32
13#define MBC_HUC3 64
14#define MBC_RTC 128
15#define MBC_BAT 256
16
17struct mbc
18{
19 int type;
20 int model;
21 int rombank;
22 int rambank;
23 int romsize;
24 int ramsize;
25 int enableram;
26 int batt;
27 byte *rmap[0x10], *wmap[0x10];
28};
29
30struct rom
31{
32 byte (*bank)[16384];
33 char name[20];
34};
35
36struct ram
37{
38 byte hi[256];
39 byte ibank[8][4096];
40 byte (*sbank)[8192];
41 int loaded;
42};
43
44extern struct mbc mbc;
45extern struct rom rom;
46extern struct ram ram;
47
48void mem_updatemap(void) ICODE_ATTR;
49void mem_write(int a, byte b) ICODE_ATTR;
50byte mem_read(int a) ICODE_ATTR;
51void mbc_reset(void);
52
53
54#define READB(a) ( mbc.rmap[(a)>>12] \
55? mbc.rmap[(a)>>12][(a)] \
56: mem_read((a)) )
57#define READW(a) ( READB((a)) | ((word)READB((a)+1)<<8) )
58
59#define WRITEB(a, b) ( mbc.wmap[(a)>>12] \
60? ( mbc.wmap[(a)>>12][(a)] = (b) ) \
61: ( mem_write((a), (b)), (b) ) )
62#define WRITEW(a, w) ( WRITEB((a), (w)&0xFF), WRITEB((a)+1, (w)>>8) )
63
64#endif