mirror of
https://github.com/libretro/beetle-pce-fast-libretro.git
synced 2024-11-24 00:10:14 +00:00
162 lines
3.4 KiB
C++
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
|