mirror of
https://github.com/dborth/vbagx.git
synced 2024-12-27 11:11:50 +01:00
c21ff25fac
others
148 lines
3.3 KiB
C
148 lines
3.3 KiB
C
#ifndef GBA_H
|
|
#define GBA_H
|
|
|
|
#include "../System.h"
|
|
|
|
#define SAVE_GAME_VERSION_1 1
|
|
#define SAVE_GAME_VERSION_2 2
|
|
#define SAVE_GAME_VERSION_3 3
|
|
#define SAVE_GAME_VERSION_4 4
|
|
#define SAVE_GAME_VERSION_5 5
|
|
#define SAVE_GAME_VERSION_6 6
|
|
#define SAVE_GAME_VERSION_7 7
|
|
#define SAVE_GAME_VERSION_8 8
|
|
#define SAVE_GAME_VERSION_9 9
|
|
#define SAVE_GAME_VERSION_10 10
|
|
#define SAVE_GAME_VERSION SAVE_GAME_VERSION_10
|
|
|
|
typedef struct {
|
|
u8 *address;
|
|
u32 mask;
|
|
} memoryMap;
|
|
|
|
typedef union {
|
|
struct {
|
|
#ifdef WORDS_BIGENDIAN
|
|
u8 B3;
|
|
u8 B2;
|
|
u8 B1;
|
|
u8 B0;
|
|
#else
|
|
u8 B0;
|
|
u8 B1;
|
|
u8 B2;
|
|
u8 B3;
|
|
#endif
|
|
} B;
|
|
struct {
|
|
#ifdef WORDS_BIGENDIAN
|
|
u16 W1;
|
|
u16 W0;
|
|
#else
|
|
u16 W0;
|
|
u16 W1;
|
|
#endif
|
|
} W;
|
|
#ifdef WORDS_BIGENDIAN
|
|
volatile u32 I;
|
|
#else
|
|
u32 I;
|
|
#endif
|
|
} reg_pair;
|
|
|
|
#ifndef NO_GBA_MAP
|
|
extern memoryMap map[256];
|
|
#endif
|
|
|
|
extern reg_pair reg[45];
|
|
extern u8 biosProtected[4];
|
|
|
|
extern bool N_FLAG;
|
|
extern bool Z_FLAG;
|
|
extern bool C_FLAG;
|
|
extern bool V_FLAG;
|
|
extern bool armIrqEnable;
|
|
extern bool armState;
|
|
extern int armMode;
|
|
extern void (*cpuSaveGameFunc)(u32,u8);
|
|
|
|
#ifdef BKPT_SUPPORT
|
|
extern u8 freezeWorkRAM[0x40000];
|
|
extern u8 freezeInternalRAM[0x8000];
|
|
extern u8 freezeVRAM[0x18000];
|
|
extern u8 freezeOAM[0x400];
|
|
extern u8 freezePRAM[0x400];
|
|
extern bool debugger_last;
|
|
extern int oldreg[18];
|
|
extern char oldbuffer[10];
|
|
#endif
|
|
|
|
extern bool CPUReadGSASnapshot(const char *);
|
|
extern bool CPUReadGSASPSnapshot(const char *);
|
|
extern bool CPUWriteGSASnapshot(const char *, const char *, const char *, const char *);
|
|
extern bool CPUWriteBatteryFile(const char *);
|
|
extern bool CPUReadBatteryFile(const char *);
|
|
extern bool CPUExportEepromFile(const char *);
|
|
extern bool CPUImportEepromFile(const char *);
|
|
extern bool CPUWritePNGFile(const char *);
|
|
extern bool CPUWriteBMPFile(const char *);
|
|
extern void CPUCleanUp();
|
|
extern void CPUUpdateRender();
|
|
extern void CPUUpdateRenderBuffers(bool);
|
|
extern bool CPUReadMemState(char *, int);
|
|
extern bool CPUWriteMemState(char *, int);
|
|
#ifdef __LIBRETRO__
|
|
extern bool CPUReadState(const u8*, unsigned);
|
|
extern unsigned int CPUWriteState(u8 *data, unsigned int size);
|
|
#else
|
|
extern bool CPUReadState(const char *);
|
|
extern bool CPUWriteState(const char *);
|
|
#endif
|
|
extern int CPULoadRom(const char *);
|
|
extern void doMirroring(bool);
|
|
extern void CPUUpdateRegister(u32, u16);
|
|
extern void applyTimer ();
|
|
extern void CPUInit(const char *,bool);
|
|
extern void CPUReset();
|
|
extern void CPULoop(int);
|
|
extern void CPUCheckDMA(int,int);
|
|
extern bool CPUIsGBAImage(const char *);
|
|
extern bool CPUIsZipFile(const char *);
|
|
#ifdef PROFILING
|
|
#include "prof/prof.h"
|
|
extern void cpuProfil(profile_segment *seg);
|
|
extern void cpuEnableProfiling(int hz);
|
|
#endif
|
|
|
|
extern struct EmulatedSystem GBASystem;
|
|
|
|
#define R13_IRQ 18
|
|
#define R14_IRQ 19
|
|
#define SPSR_IRQ 20
|
|
#define R13_USR 26
|
|
#define R14_USR 27
|
|
#define R13_SVC 28
|
|
#define R14_SVC 29
|
|
#define SPSR_SVC 30
|
|
#define R13_ABT 31
|
|
#define R14_ABT 32
|
|
#define SPSR_ABT 33
|
|
#define R13_UND 34
|
|
#define R14_UND 35
|
|
#define SPSR_UND 36
|
|
#define R8_FIQ 37
|
|
#define R9_FIQ 38
|
|
#define R10_FIQ 39
|
|
#define R11_FIQ 40
|
|
#define R12_FIQ 41
|
|
#define R13_FIQ 42
|
|
#define R14_FIQ 43
|
|
#define SPSR_FIQ 44
|
|
|
|
#include "Cheats.h"
|
|
#include "Globals.h"
|
|
#include "EEprom.h"
|
|
#include "Flash.h"
|
|
|
|
#endif // GBA_H
|