beetle-pce-fast-libretro/mednafen/gba/GBA.h
2012-11-27 04:44:20 +01:00

162 lines
3.4 KiB
C++

// -*- C++ -*-
// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator.
// Copyright (C) 1999-2003 Forgotten
// Copyright (C) 2005 Forgotten and the VBA development team
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2, or(at your option)
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software Foundation,
// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#ifndef VBA_GBA_H
#define VBA_GBA_H
#include "../mednafen.h"
namespace MDFN_IEN_GBA
{
typedef struct {
uint8 *address;
uint32 mask;
} memoryMap;
typedef union {
struct {
#ifdef MSB_FIRST
uint8 B3;
uint8 B2;
uint8 B1;
uint8 B0;
#else
uint8 B0;
uint8 B1;
uint8 B2;
uint8 B3;
#endif
} B;
struct {
#ifdef MSB_FIRST
uint16 W1;
uint16 W0;
#else
uint16 W0;
uint16 W1;
#endif
} W;
#ifdef MSB_FIRST
volatile uint32 I;
#else
uint32 I;
#endif
} reg_pair;
#ifndef NO_GBA_MAP
extern memoryMap map[256];
#endif
extern bool busPrefetch;
extern bool busPrefetchEnable;
extern uint32 busPrefetchCount;
extern uint32 cpuPrefetch[2];
extern uint8 memoryWait[16];
extern uint8 memoryWait32[16];
extern uint8 memoryWaitSeq[16];
extern uint8 memoryWaitSeq32[16];
extern reg_pair reg[45];
extern uint8 biosProtected[4];
extern uint32 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)(uint32,uint8);
extern bool CPUWriteBatteryFile(const char *);
extern bool CPUReadBatteryFile(const char *);
extern void CPUCleanUp();
extern void CPUUpdateRender();
extern void doMirroring(bool);
extern void CPUUpdateRegister(uint32, uint16);
extern void applyTimer ();
void CPUWriteMemory(uint32 address, uint32 value);
void CPUWriteHalfWord(uint32, uint16);
void CPUWriteByte(uint32, uint8);
extern void CPULoop(int);
extern void CPUCheckDMA(int,int);
extern void CPUSwitchMode(int mode, bool saveState, bool breakLoop);
extern void CPUSwitchMode(int mode, bool saveState);
extern void CPUUndefinedException();
extern void CPUSoftwareInterrupt();
extern void CPUSoftwareInterrupt(int comment);
extern void CPUCompareVCOUNT();
extern void CPUUpdateCPSR();
extern void CPUUpdateFlags(bool breakLoop);
extern void CPUUpdateFlags();
extern uint8 cpuBitsSet[256];
extern uint8 cpuLowestBitSet[256];
extern struct EmulatedSystem GBASystem;
int32 MDFNGBA_GetTimerPeriod(int which);
#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 "Globals.h"
#include "eeprom.h"
#include "flash.h"
#include "RTC.h"
namespace MDFN_IEN_GBA
{
extern RTC *GBA_RTC;
}
#endif //VBA_GBA_H