172 lines
5.4 KiB
C
172 lines
5.4 KiB
C
|
#ifdef __cplusplus
|
||
|
#include "..\\..\\N64 System.h"
|
||
|
#include "..\\..\\User Interface.h"
|
||
|
#include "..\\..\\Multilanguage.h"
|
||
|
#include "..\\..\\Plugin.h"
|
||
|
|
||
|
extern CN64System * g_N64System;
|
||
|
extern CN64System * g_SyncSystem;
|
||
|
extern CRecompiler * g_Recompiler;
|
||
|
extern CMipsMemory * g_MMU; //Memory of the n64
|
||
|
extern CTLB * g_TLB; //TLB Unit
|
||
|
extern CRegisters * g_Reg; //Current Register Set attacted to the _MMU
|
||
|
extern CNotification * g_Notify;
|
||
|
extern CSettings * g_Settings;
|
||
|
extern CPlugins * g_Plugins;
|
||
|
extern CN64Rom * g_Rom; //The current rom that this system is executing.. it can only execute one file at the time
|
||
|
extern CAudio * g_Audio;
|
||
|
|
||
|
class CC_Core
|
||
|
{
|
||
|
public:
|
||
|
static void SetSettings ( );
|
||
|
static void SetN64System ( CN64System * System );
|
||
|
static void SetSyncCpu ( CN64System * System );
|
||
|
static void SetCurrentSystem (CN64System * System );
|
||
|
static void RunRsp (void );
|
||
|
static void RefreshScreen (void );
|
||
|
static void ApplyCheats (CN64System * System );
|
||
|
static void ApplyGSButtonCheats (CN64System * System );
|
||
|
static void PauseExecution ( void );
|
||
|
static bool LoadState (CN64System * System ) { return System->LoadState(); }
|
||
|
static bool SaveState (CN64System * System ) { return System->SaveState(); }
|
||
|
static void GenerateProfileLog ( void );
|
||
|
static void ResetTimer ( void );
|
||
|
static DWORD StartTimer ( DWORD Address );
|
||
|
static DWORD StopTimer ( void );
|
||
|
};
|
||
|
|
||
|
#endif
|
||
|
#include <common/memtest.h>
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#include "..\\Types.h"
|
||
|
|
||
|
const char * GetAppName ( void );
|
||
|
|
||
|
void PauseExecution ( void );
|
||
|
void DisplayError ( const char * Message, ... );
|
||
|
void DisplayMessage ( int DisplayTime, const char * Message, ... );
|
||
|
void DisplayMessage2 ( const char * Message, ... );
|
||
|
void GetAutoSaveDir ( char * Directory );
|
||
|
void GetInstantSaveDir ( char * Directory );
|
||
|
void SetFpuLocations ( void );
|
||
|
BOOL Limit_FPS ( void );
|
||
|
void DacrateChanged ( enum SystemType Type );
|
||
|
void ChangePluginFunc ( void );
|
||
|
void ApplyGSButtonCheats ( void );
|
||
|
void ChangeFullScreenFunc ( void );
|
||
|
BOOL Close_C_CPU ( void );
|
||
|
void StopEmulation ( void );
|
||
|
void __stdcall UpdateSyncCPU ( DWORD const Cycles );
|
||
|
void ExecuteCycles ( DWORD Cycles );
|
||
|
void SyncSystem ( void );
|
||
|
void ChangeTimer ( enum TimerType Type, int Value );
|
||
|
void ChangeTimerRelative( enum TimerType Type, int Value );
|
||
|
BOOL Machine_LoadState ( void );
|
||
|
BOOL Machine_SaveState ( void );
|
||
|
void BreakPoint ( LPCSTR FileName, int LineNumber );
|
||
|
void CleanCMemory ( void );
|
||
|
void UpdateCurrentHalfLine ( void );
|
||
|
void ApplyCheats ( void );
|
||
|
void RunRsp ( void );
|
||
|
void RefreshScreen ( void );
|
||
|
void ResetX86Logs ( void );
|
||
|
void SyncToPC ( void );
|
||
|
BOOL EndEmulation ( void );
|
||
|
void SetEndEmulation ( BOOL End );
|
||
|
void CloseSaveChips ( void );
|
||
|
|
||
|
|
||
|
//TLB Functions
|
||
|
BOOL AddressDefined ( DWORD VAddr );
|
||
|
BOOL TranslateVaddr ( DWORD VAddr, DWORD * PAddr);
|
||
|
void TLB_Probe ( void );
|
||
|
void TLB_ReadEntry ( void );
|
||
|
void TLB_WriteEntry ( int index, BOOL Random );
|
||
|
|
||
|
BOOL ClearRecompCodeInitialCode ( void );
|
||
|
BOOL ClearRecompCodeProtectMem ( DWORD PhysicalAddress, int length );
|
||
|
|
||
|
|
||
|
//Timer functions
|
||
|
void ResetTimer ( void );
|
||
|
void GenerateProfileLog ( void );
|
||
|
DWORD StartTimer ( DWORD Address );
|
||
|
DWORD StopTimer ( void );
|
||
|
|
||
|
|
||
|
//registers
|
||
|
extern MULTI_ACCESS_QWORD * g_GPR, * g_FPR, * g_HI, * g_LO;
|
||
|
extern DWORD * g_PROGRAM_COUNTER, * g_CP0, * g_RegMI, * g_LLBit,
|
||
|
* g_LLAddr, * g_FPCR, * g_RegSI, * g_RegRI, * g_RegPI, * g_RegAI,
|
||
|
* g_RegVI, * g_RegDPC, * g_RegSP, * g_RegRDRAM;
|
||
|
extern double ** g_FPRDoubleLocation;
|
||
|
extern float ** g_FPRFloatLocation;
|
||
|
extern enum TimerType * g_CurrentTimerType;
|
||
|
extern int * g_Timer;
|
||
|
|
||
|
//Register Name
|
||
|
extern const char ** g_Cop0_Name;
|
||
|
|
||
|
//settings
|
||
|
extern BOOL g_ShowUnhandledMemory, g_ShowCPUPer, g_ShowTLBMisses, g_UseTlb,
|
||
|
g_HaveDebugger, g_AudioSignal, g_ShowDListAListCount, g_ShowPifRamErrors,
|
||
|
g_GenerateLog, g_DelaySI, g_SPHack, g_DisableRegCaching, g_ShowCompMem,
|
||
|
g_UseLinking, g_FixedAudio, g_LogX86Code;
|
||
|
extern DWORD g_RomFileSize, g_CountPerOp;
|
||
|
extern enum CPU_TYPE g_CPU_Type;
|
||
|
extern enum SAVE_CHIP_TYPE g_SaveUsing;
|
||
|
extern enum CICChip g_CicChip;
|
||
|
extern enum FUNC_LOOKUP_METHOD g_LookUpMode;
|
||
|
extern char g_RomName [300];
|
||
|
|
||
|
//Plugins
|
||
|
extern DWORD * g_AudioIntrReg;
|
||
|
extern CONTROL * g_Controllers;
|
||
|
extern enum SystemType g_SystemType;
|
||
|
|
||
|
//Memory
|
||
|
extern DWORD * g_TLB_ReadMap, * g_TLB_WriteMap, g_RdramSize, g_SystemRdramSize, *g_HalfLine, * g_MemoryStack;
|
||
|
extern BYTE * g_N64MEM, *g_RDRAM, *g_DMEM, *g_IMEM, *g_ROM, *g_PIF_Ram;
|
||
|
|
||
|
//Misc
|
||
|
enum { NoOfFrames = 7 };
|
||
|
extern DWORD g_CurrentFrame;
|
||
|
extern QWORD g_Frequency, g_Frames[NoOfFrames], g_LastFrame;
|
||
|
|
||
|
typedef struct {
|
||
|
HANDLE hStepping;
|
||
|
|
||
|
int InterruptFlag;
|
||
|
BOOL SoftReset;
|
||
|
BOOL GenerateInterrupt;
|
||
|
BOOL DoSomething;
|
||
|
BOOL CloseCPU;
|
||
|
BOOL ChangeWindow;
|
||
|
BOOL GSButton;
|
||
|
BOOL CheckInterrupts;
|
||
|
BOOL Pause;
|
||
|
BOOL SaveState;
|
||
|
BOOL RestoreState;
|
||
|
BOOL DoInterrupt;
|
||
|
BOOL InterruptExecuted;
|
||
|
BOOL Stepping;
|
||
|
BOOL ChangePlugin;
|
||
|
BOOL ProfileStartStop;
|
||
|
BOOL ProfileResetStats;
|
||
|
BOOL ProfileGenerateLogs;
|
||
|
BOOL GameSpeed_Increase;
|
||
|
BOOL GameSpeed_Decrease;
|
||
|
BOOL DMAUsed;
|
||
|
} CPU_ACTION;
|
||
|
|
||
|
extern CPU_ACTION * g_CPU_Action;
|
||
|
extern CPU_ACTION * g_Main_CPU_Action;
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|