137fb6cb9f
Here's another patch for rockboy that adds automatic frameskip (it's pretty rough as I haven't figured out an accurate timer), fullscreen support on the H300, and a bit of assembly and some IRAM stuff. I'm not sure if I'm doing the IRAM stuff correct though as it doesn't seem to make much of a difference if any. I've also added a statistics option that will show how many frames per second the gameboy is seeing (not what the player is getting) and what the frameskip is at. When you enable stats sometimes you have to go back into the menu and then come out to clear erronous values. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8397 a1c6a512-1295-4272-9138-f99709370657
80 lines
1.1 KiB
C
80 lines
1.1 KiB
C
|
|
#ifndef __MEM_H__
|
|
#define __MEM_H__
|
|
|
|
|
|
#include "defs.h"
|
|
|
|
|
|
|
|
#define MBC_NONE 0
|
|
#define MBC_MBC1 1
|
|
#define MBC_MBC2 2
|
|
#define MBC_MBC3 3
|
|
#define MBC_MBC5 5
|
|
#define MBC_RUMBLE 15
|
|
#define MBC_HUC1 0xC1
|
|
#define MBC_HUC3 0xC3
|
|
|
|
struct mbc
|
|
{
|
|
int type;
|
|
int model;
|
|
int rombank;
|
|
int rambank;
|
|
int romsize;
|
|
int ramsize;
|
|
int enableram;
|
|
int batt;
|
|
byte *rmap[0x10], *wmap[0x10];
|
|
};
|
|
|
|
struct rom
|
|
{
|
|
byte (*bank)[16384];
|
|
char name[20];
|
|
};
|
|
|
|
struct ram
|
|
{
|
|
byte hi[256];
|
|
byte ibank[8][4096];
|
|
byte (*sbank)[8192];
|
|
int loaded;
|
|
};
|
|
|
|
|
|
extern struct mbc mbc;
|
|
extern struct rom rom;
|
|
extern struct ram ram;
|
|
|
|
|
|
|
|
|
|
|
|
void mem_updatemap(void) ICODE_ATTR;
|
|
void ioreg_write(byte r, byte b) ICODE_ATTR;
|
|
void mbc_write(int a, byte b) ICODE_ATTR;
|
|
void mem_write(int a, byte b) ICODE_ATTR;
|
|
byte mem_read(int a) ICODE_ATTR;
|
|
void mbc_reset(void);
|
|
|
|
|
|
|
|
#define READB(a) ( mbc.rmap[(a)>>12] \
|
|
? mbc.rmap[(a)>>12][(a)] \
|
|
: mem_read((a)) )
|
|
#define READW(a) ( READB((a)) | ((word)READB((a)+1)<<8) )
|
|
|
|
#define WRITEB(a, b) ( mbc.wmap[(a)>>12] \
|
|
? ( mbc.wmap[(a)>>12][(a)] = (b) ) \
|
|
: ( mem_write((a), (b)), (b) ) )
|
|
#define WRITEW(a, w) ( WRITEB((a), (w)&0xFF), WRITEB((a)+1, (w)>>8) )
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|