A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 64 lines 1.2 kB view raw
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