add concept of #ifdef DEVELOPER ("dev+") build type which will be used to prevent costly diagnostics computations and finetuning configurations from slowing down other users.
This commit is contained in:
parent
303bf1747f
commit
2a66e41ad5
|
@ -7,7 +7,7 @@ struct ALIGN(16) ARM9_struct {
|
||||||
//ARM9 mem
|
//ARM9 mem
|
||||||
u8 ARM9_ITCM[0x8000];
|
u8 ARM9_ITCM[0x8000];
|
||||||
u8 ARM9_DTCM[0x4000];
|
u8 ARM9_DTCM[0x4000];
|
||||||
u8 MAIN_MEM[0x400000];
|
u8 MAIN_MEM[0x800000]; //this has been expanded to 8MB to support debug consoles
|
||||||
u8 ARM9_REG[0x1000000];
|
u8 ARM9_REG[0x1000000];
|
||||||
u8 ARM9_BIOS[0x8000];
|
u8 ARM9_BIOS[0x8000];
|
||||||
u8 ARM9_VMEM[0x800];
|
u8 ARM9_VMEM[0x800];
|
||||||
|
|
|
@ -369,23 +369,23 @@ u32 DMADst[2][4] = {{0, 0, 0, 0}, {0, 0, 0, 0}};
|
||||||
|
|
||||||
void MMU_clearMem()
|
void MMU_clearMem()
|
||||||
{
|
{
|
||||||
memset(ARM9Mem.ARM9_ABG, 0, 0x080000);
|
memset(ARM9Mem.ARM9_ABG, 0, sizeof(ARM9Mem.ARM9_ABG));
|
||||||
memset(ARM9Mem.ARM9_AOBJ, 0, 0x040000);
|
memset(ARM9Mem.ARM9_AOBJ, 0, sizeof(ARM9Mem.ARM9_AOBJ));
|
||||||
memset(ARM9Mem.ARM9_BBG, 0, 0x020000);
|
memset(ARM9Mem.ARM9_BBG, 0, sizeof(ARM9Mem.ARM9_BBG));
|
||||||
memset(ARM9Mem.ARM9_BOBJ, 0, 0x020000);
|
memset(ARM9Mem.ARM9_BOBJ, 0, sizeof(ARM9Mem.ARM9_BOBJ));
|
||||||
|
|
||||||
memset(ARM9Mem.ARM9_DTCM, 0, 0x4000);
|
memset(ARM9Mem.ARM9_DTCM, 0, sizeof(ARM9Mem.ARM9_DTCM));
|
||||||
memset(ARM9Mem.ARM9_ITCM, 0, 0x8000);
|
memset(ARM9Mem.ARM9_ITCM, 0, sizeof(ARM9Mem.ARM9_ITCM));
|
||||||
memset(ARM9Mem.ARM9_LCD, 0, 0x0A4000);
|
memset(ARM9Mem.ARM9_LCD, 0, sizeof(ARM9Mem.ARM9_LCD));
|
||||||
memset(ARM9Mem.ARM9_OAM, 0, 0x0800);
|
memset(ARM9Mem.ARM9_OAM, 0, sizeof(ARM9Mem.ARM9_OAM));
|
||||||
memset(ARM9Mem.ARM9_REG, 0, 0x01000000);
|
memset(ARM9Mem.ARM9_REG, 0, sizeof(ARM9Mem.ARM9_REG));
|
||||||
memset(ARM9Mem.ARM9_VMEM, 0, 0x0800);
|
memset(ARM9Mem.ARM9_VMEM, 0, sizeof(ARM9Mem.ARM9_VMEM));
|
||||||
memset(ARM9Mem.MAIN_MEM, 0, sizeof(ARM9Mem.MAIN_MEM));
|
memset(ARM9Mem.MAIN_MEM, 0, sizeof(ARM9Mem.MAIN_MEM));
|
||||||
|
|
||||||
memset(ARM9Mem.blank_memory, 0, 0x020000);
|
memset(ARM9Mem.blank_memory, 0, sizeof(ARM9Mem.blank_memory));
|
||||||
|
|
||||||
memset(MMU.ARM7_ERAM, 0, 0x010000);
|
memset(MMU.ARM7_ERAM, 0, sizeof(MMU.ARM7_ERAM));
|
||||||
memset(MMU.ARM7_REG, 0, 0x010000);
|
memset(MMU.ARM7_REG, 0, sizeof(MMU.ARM7_REG));
|
||||||
|
|
||||||
IPC_FIFOinit(ARMCPU_ARM9);
|
IPC_FIFOinit(ARMCPU_ARM9);
|
||||||
IPC_FIFOinit(ARMCPU_ARM7);
|
IPC_FIFOinit(ARMCPU_ARM7);
|
||||||
|
|
|
@ -204,6 +204,12 @@ u8 FASTCALL _MMU_ARM7_read08(u32 adr);
|
||||||
u16 FASTCALL _MMU_ARM7_read16(u32 adr);
|
u16 FASTCALL _MMU_ARM7_read16(u32 adr);
|
||||||
u32 FASTCALL _MMU_ARM7_read32(u32 adr);
|
u32 FASTCALL _MMU_ARM7_read32(u32 adr);
|
||||||
|
|
||||||
|
//in debug builds we have twice as much memory
|
||||||
|
#ifdef DEVELOPER
|
||||||
|
#define _MMU_MAIN_MEM_MASK 0x7FFFFF
|
||||||
|
#else
|
||||||
|
#define _MMU_MAIN_MEM_MASK 0x3FFFFF
|
||||||
|
#endif
|
||||||
|
|
||||||
FORCEINLINE u8 _MMU_read08(const int PROCNUM, u32 addr) {
|
FORCEINLINE u8 _MMU_read08(const int PROCNUM, u32 addr) {
|
||||||
if(PROCNUM==ARMCPU_ARM9)
|
if(PROCNUM==ARMCPU_ARM9)
|
||||||
|
@ -214,7 +220,7 @@ FORCEINLINE u8 _MMU_read08(const int PROCNUM, u32 addr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( (addr & 0x0F000000) == 0x02000000)
|
if ( (addr & 0x0F000000) == 0x02000000)
|
||||||
return T1ReadByte( ARM9Mem.MAIN_MEM, addr & 0x3FFFFF);
|
return T1ReadByte( ARM9Mem.MAIN_MEM, addr & _MMU_MAIN_MEM_MASK);
|
||||||
|
|
||||||
if(PROCNUM==ARMCPU_ARM9) return _MMU_ARM9_read08(addr);
|
if(PROCNUM==ARMCPU_ARM9) return _MMU_ARM9_read08(addr);
|
||||||
else return _MMU_ARM7_read08(addr);
|
else return _MMU_ARM7_read08(addr);
|
||||||
|
@ -229,7 +235,7 @@ FORCEINLINE u16 _MMU_read16(const int PROCNUM, u32 addr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( (addr & 0x0F000000) == 0x02000000)
|
if ( (addr & 0x0F000000) == 0x02000000)
|
||||||
return T1ReadWord( ARM9Mem.MAIN_MEM, addr & 0x3FFFFF);
|
return T1ReadWord( ARM9Mem.MAIN_MEM, addr & _MMU_MAIN_MEM_MASK);
|
||||||
|
|
||||||
if(PROCNUM==ARMCPU_ARM9) return _MMU_ARM9_read16(addr);
|
if(PROCNUM==ARMCPU_ARM9) return _MMU_ARM9_read16(addr);
|
||||||
else return _MMU_ARM7_read16(addr);
|
else return _MMU_ARM7_read16(addr);
|
||||||
|
@ -244,7 +250,7 @@ FORCEINLINE u32 _MMU_read32(int PROCNUM, u32 addr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( (addr & 0x0F000000) == 0x02000000)
|
if ( (addr & 0x0F000000) == 0x02000000)
|
||||||
return T1ReadLong( ARM9Mem.MAIN_MEM, addr & 0x3FFFFF);
|
return T1ReadLong( ARM9Mem.MAIN_MEM, addr & _MMU_MAIN_MEM_MASK);
|
||||||
|
|
||||||
if(PROCNUM==ARMCPU_ARM9) return _MMU_ARM9_read32(addr);
|
if(PROCNUM==ARMCPU_ARM9) return _MMU_ARM9_read32(addr);
|
||||||
else return _MMU_ARM7_read32(addr);
|
else return _MMU_ARM7_read32(addr);
|
||||||
|
@ -259,7 +265,7 @@ FORCEINLINE void _MMU_write08(const int PROCNUM, u32 addr, u8 val) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( (addr & 0x0F000000) == 0x02000000) {
|
if ( (addr & 0x0F000000) == 0x02000000) {
|
||||||
T1WriteByte( ARM9Mem.MAIN_MEM, addr & 0x3FFFFF, val);
|
T1WriteByte( ARM9Mem.MAIN_MEM, addr & _MMU_MAIN_MEM_MASK, val);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -276,7 +282,7 @@ FORCEINLINE void _MMU_write16(const int PROCNUM, u32 addr, u16 val) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( (addr & 0x0F000000) == 0x02000000) {
|
if ( (addr & 0x0F000000) == 0x02000000) {
|
||||||
T1WriteWord( ARM9Mem.MAIN_MEM, addr & 0x3FFFFF, val);
|
T1WriteWord( ARM9Mem.MAIN_MEM, addr & _MMU_MAIN_MEM_MASK, val);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -293,7 +299,7 @@ FORCEINLINE void _MMU_write32(const int PROCNUM, u32 addr, u32 val) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( (addr & 0x0F000000) == 0x02000000) {
|
if ( (addr & 0x0F000000) == 0x02000000) {
|
||||||
T1WriteLong( ARM9Mem.MAIN_MEM, addr & 0x3FFFFF, val);
|
T1WriteLong( ARM9Mem.MAIN_MEM, addr & _MMU_MAIN_MEM_MASK, val);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1032,6 +1032,17 @@ TEMPLATE static u32 getCRC16()
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEMPLATE static u32 isDebugger()
|
||||||
|
{
|
||||||
|
//gbatek has additional specifications which are not emulated here
|
||||||
|
#ifdef DEVELOPER
|
||||||
|
cpu->R[0] = 1;
|
||||||
|
#else
|
||||||
|
cpu->R[0] = 0;
|
||||||
|
#endif
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
TEMPLATE static u32 SoundBias()
|
TEMPLATE static u32 SoundBias()
|
||||||
{
|
{
|
||||||
u32 current = SPU_ReadLong(0x4000504);
|
u32 current = SPU_ReadLong(0x4000504);
|
||||||
|
@ -1066,7 +1077,7 @@ u32 (* ARM9_swi_tab[32])()={
|
||||||
fastCopy<ARMCPU_ARM9>, // 0x0C
|
fastCopy<ARMCPU_ARM9>, // 0x0C
|
||||||
bios_sqrt<ARMCPU_ARM9>, // 0x0D
|
bios_sqrt<ARMCPU_ARM9>, // 0x0D
|
||||||
getCRC16<ARMCPU_ARM9>, // 0x0E
|
getCRC16<ARMCPU_ARM9>, // 0x0E
|
||||||
bios_nop<ARMCPU_ARM9>, // 0x0F
|
isDebugger<ARMCPU_ARM9>, // 0x0F
|
||||||
BitUnPack<ARMCPU_ARM9>, // 0x10
|
BitUnPack<ARMCPU_ARM9>, // 0x10
|
||||||
LZ77UnCompWram<ARMCPU_ARM9>, // 0x11
|
LZ77UnCompWram<ARMCPU_ARM9>, // 0x11
|
||||||
LZ77UnCompVram<ARMCPU_ARM9>, // 0x12
|
LZ77UnCompVram<ARMCPU_ARM9>, // 0x12
|
||||||
|
@ -1101,7 +1112,7 @@ u32 (* ARM7_swi_tab[32])()={
|
||||||
fastCopy<ARMCPU_ARM7>, // 0x0C
|
fastCopy<ARMCPU_ARM7>, // 0x0C
|
||||||
bios_sqrt<ARMCPU_ARM7>, // 0x0D
|
bios_sqrt<ARMCPU_ARM7>, // 0x0D
|
||||||
getCRC16<ARMCPU_ARM7>, // 0x0E
|
getCRC16<ARMCPU_ARM7>, // 0x0E
|
||||||
bios_nop<ARMCPU_ARM7>, // 0x0F
|
isDebugger<ARMCPU_ARM7>, // 0x0F
|
||||||
BitUnPack<ARMCPU_ARM7>, // 0x10
|
BitUnPack<ARMCPU_ARM7>, // 0x10
|
||||||
LZ77UnCompWram<ARMCPU_ARM7>, // 0x11
|
LZ77UnCompWram<ARMCPU_ARM7>, // 0x11
|
||||||
LZ77UnCompVram<ARMCPU_ARM7>, // 0x12
|
LZ77UnCompVram<ARMCPU_ARM7>, // 0x12
|
||||||
|
|
|
@ -52,7 +52,7 @@ public:
|
||||||
static void log(unsigned int channel, const char * file, unsigned int line, void (*callback)(const Logger& logger, const char * message));
|
static void log(unsigned int channel, const char * file, unsigned int line, void (*callback)(const Logger& logger, const char * message));
|
||||||
};
|
};
|
||||||
|
|
||||||
#if defined(DEBUG) || defined(GPUDEBUG) || defined(DIVDEBUG) || defined(SQRTDEBUG) || defined(DMADEBUG) || defined(WANTPROGINFO)
|
#if defined(DEBUG) || defined(GPUDEBUG) || defined(DIVDEBUG) || defined(SQRTDEBUG) || defined(DMADEBUG) || defined(DEVELOPER)
|
||||||
#define LOGC(channel, ...) Logger::log(channel, __FILE__, __LINE__, __VA_ARGS__)
|
#define LOGC(channel, ...) Logger::log(channel, __FILE__, __LINE__, __VA_ARGS__)
|
||||||
#else
|
#else
|
||||||
#define LOGC(...)
|
#define LOGC(...)
|
||||||
|
@ -101,7 +101,7 @@ public:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef WANTPROGINFO
|
#ifdef DEVELOPER
|
||||||
#define PROGINFO(...) LOGC(7, __VA_ARGS__)
|
#define PROGINFO(...) LOGC(7, __VA_ARGS__)
|
||||||
#else
|
#else
|
||||||
#define PROGINFO(...)
|
#define PROGINFO(...)
|
||||||
|
|
|
@ -131,7 +131,11 @@ SFORMAT SF_ARM9[]={
|
||||||
SFORMAT SF_MEM[]={
|
SFORMAT SF_MEM[]={
|
||||||
{ "ITCM", 1, 0x8000, ARM9Mem.ARM9_ITCM},
|
{ "ITCM", 1, 0x8000, ARM9Mem.ARM9_ITCM},
|
||||||
{ "DTCM", 1, 0x4000, ARM9Mem.ARM9_DTCM},
|
{ "DTCM", 1, 0x4000, ARM9Mem.ARM9_DTCM},
|
||||||
{ "WRAM", 1, sizeof(ARM9Mem.MAIN_MEM), ARM9Mem.MAIN_MEM},
|
{ "WRAM", 1, 0x400000, ARM9Mem.MAIN_MEM},
|
||||||
|
#ifdef DEVELOPER
|
||||||
|
//expanded memory is only saved and loaded if this is a debug console
|
||||||
|
{ "WRAX", 1, 0x400000, ARM9Mem.MAIN_MEM+0x400000},
|
||||||
|
#endif
|
||||||
|
|
||||||
//NOTE - this is not as large as the allocated memory.
|
//NOTE - this is not as large as the allocated memory.
|
||||||
//the memory is overlarge due to the way our memory map system is setup
|
//the memory is overlarge due to the way our memory map system is setup
|
||||||
|
|
|
@ -20,6 +20,11 @@
|
||||||
#ifndef TYPES_HPP
|
#ifndef TYPES_HPP
|
||||||
#define TYPES_HPP
|
#define TYPES_HPP
|
||||||
|
|
||||||
|
//--------------
|
||||||
|
//configuration
|
||||||
|
//#define DEVELOPER
|
||||||
|
//--------------
|
||||||
|
|
||||||
#define DESMUME_NAME "DeSmuME"
|
#define DESMUME_NAME "DeSmuME"
|
||||||
|
|
||||||
#ifdef _WIN64
|
#ifdef _WIN64
|
||||||
|
@ -38,6 +43,12 @@
|
||||||
#define DESMUME_CPUEXT_STRING ""
|
#define DESMUME_CPUEXT_STRING ""
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEVELOPER
|
||||||
|
#define DESMUME_FEATURE_STRING " dev+"
|
||||||
|
#else
|
||||||
|
#define DESMUME_FEATURE_STRING ""
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
#define DESMUME_SUBVERSION_STRING " debug"
|
#define DESMUME_SUBVERSION_STRING " debug"
|
||||||
#else
|
#else
|
||||||
|
@ -50,13 +61,22 @@
|
||||||
|
|
||||||
#ifdef __INTEL_COMPILER
|
#ifdef __INTEL_COMPILER
|
||||||
#define DESMUME_COMPILER " (Intel) "
|
#define DESMUME_COMPILER " (Intel) "
|
||||||
|
#define DESMUME_COMPILER_DETAIL " (Intel) "
|
||||||
|
#elif _MSC_VER
|
||||||
|
#define DESMUME_COMPILER ""
|
||||||
|
#define DESMUME_COMPILER_DETAIL " msvc " _Py_STRINGIZE(_MSC_VER)
|
||||||
|
#define _Py_STRINGIZE(X) _Py_STRINGIZE1((X))
|
||||||
|
#define _Py_STRINGIZE1(X) _Py_STRINGIZE2 ## X
|
||||||
|
#define _Py_STRINGIZE2(X) #X
|
||||||
|
//re: http://72.14.203.104/search?q=cache:HG-okth5NGkJ:mail.python.org/pipermail/python-checkins/2002-November/030704.html+_msc_ver+compiler+version+string&hl=en&gl=us&ct=clnk&cd=5
|
||||||
#else
|
#else
|
||||||
// TODO: make for others compilers
|
// TODO: make for others compilers
|
||||||
#define DESMUME_COMPILER ""
|
#define DESMUME_COMPILER ""
|
||||||
|
#define DESMUME_COMPILER_DETAIL ""
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define DESMUME_VERSION_NUMERIC 90200
|
#define DESMUME_VERSION_NUMERIC 90200
|
||||||
#define DESMUME_VERSION_STRING " " "0.9.2" DESMUME_PLATFORM_STRING DESMUME_CPUEXT_STRING DESMUME_SUBVERSION_STRING DESMUME_COMPILER
|
#define DESMUME_VERSION_STRING " " "0.9.2" DESMUME_FEATURE_STRING DESMUME_PLATFORM_STRING DESMUME_CPUEXT_STRING DESMUME_SUBVERSION_STRING DESMUME_COMPILER
|
||||||
#define DESMUME_NAME_AND_VERSION " " DESMUME_NAME DESMUME_VERSION_STRING
|
#define DESMUME_NAME_AND_VERSION " " DESMUME_NAME DESMUME_VERSION_STRING
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
|
|
@ -66,7 +66,7 @@ BOOL CALLBACK AboutBox_Proc (HWND dialog, UINT message,WPARAM wparam,LPARAM lpar
|
||||||
{
|
{
|
||||||
char buf[2048];
|
char buf[2048];
|
||||||
memset(buf, 0, sizeof(buf));
|
memset(buf, 0, sizeof(buf));
|
||||||
wsprintf(buf, "version %s", DESMUME_VERSION_STRING);
|
wsprintf(buf, "version %s", DESMUME_VERSION_STRING DESMUME_COMPILER_DETAIL);
|
||||||
SetDlgItemText(dialog, IDC_TXT_VERSION, buf);
|
SetDlgItemText(dialog, IDC_TXT_VERSION, buf);
|
||||||
|
|
||||||
memset(buf, 0, sizeof(buf));
|
memset(buf, 0, sizeof(buf));
|
||||||
|
|
Loading…
Reference in New Issue