mirror of
https://github.com/gligli/nulldc-360.git
synced 2025-04-02 11:11:56 -04:00
238 lines
No EOL
6.1 KiB
C
238 lines
No EOL
6.1 KiB
C
#pragma once
|
|
#include "plugin_header.h"
|
|
|
|
#define maple_sett(x,y) NDCS_PLUGIN_MAPLE_##x##_##y
|
|
#define maple_group(x) maple_sett(x,0), maple_sett(x,1), maple_sett(x,2), maple_sett(x,3), maple_sett(x,4), maple_sett(x,5)
|
|
|
|
|
|
enum nullDCSettings
|
|
{
|
|
NDCS_DYNAREC_ENABLED,
|
|
NDCS_DYNAREC_CPPASS,
|
|
NDCS_DYNAREC_SAFEMODE,
|
|
NDCS_DYNAREC_UCFPU,
|
|
|
|
NDCS_DREAMCAST_CABLE,
|
|
NDCS_DREAMCAST_RTC,
|
|
|
|
NDCS_DREAMCAST_REGION,
|
|
NDCS_DREAMCAST_BROADCAST,
|
|
|
|
NDCS_EMULATOR_ASTART,
|
|
|
|
NDCS_PLUGIN_PVR,
|
|
NDCS_PLUGIN_GDR,
|
|
NDCS_PLUGIN_AICA,
|
|
NDCS_PLUGIN_ARM,
|
|
NDCS_PLUGIN_EXTDEV,
|
|
|
|
|
|
maple_group(0),
|
|
maple_group(1),
|
|
maple_group(2),
|
|
maple_group(3),
|
|
|
|
NDCS_COUNT,
|
|
};
|
|
|
|
#undef maple_sett
|
|
#undef maple_group
|
|
|
|
struct PluginInfoList
|
|
{
|
|
PluginInfoList* next;
|
|
char Name[128];
|
|
char dll[512];
|
|
u32 Flags;
|
|
};
|
|
struct nullDCPerfomanceInfo
|
|
{
|
|
struct
|
|
{
|
|
u32 Valid;
|
|
|
|
u32 Ticks;//total tick count
|
|
|
|
u32 PowerVR;
|
|
u32 AICA;
|
|
u32 GDRom;
|
|
u32 Maple;
|
|
u32 Dyna;
|
|
u32 Main;
|
|
u32 Rest;
|
|
} TBP;
|
|
|
|
struct
|
|
{
|
|
struct
|
|
{
|
|
u32 SrcCodeSize;
|
|
u32 CodeSize;
|
|
u32 LockedBlocks;
|
|
u32 ManualBlocks;
|
|
u32 TotalBlocks;
|
|
u64 TotalCompileTime;
|
|
} CodeGen;
|
|
struct
|
|
{
|
|
struct
|
|
{
|
|
u32 Valid;
|
|
u32 FullLookupDelta;
|
|
u32 FastLookupDelta;
|
|
u32 LookupDelta;
|
|
} Lookups;
|
|
struct
|
|
{
|
|
u32 Valid;
|
|
u32 LockedBlocks;
|
|
u32 ManualBlocks;
|
|
u32 TotalBlocks;
|
|
} Execution;
|
|
struct
|
|
{
|
|
u32 Valid;
|
|
u32 Hits;
|
|
u32 Misses;
|
|
u32 Count;
|
|
} RetCache;
|
|
}Runtime;
|
|
} Dynarec;
|
|
};
|
|
typedef PluginInfoList* EXPORT_CALL GetPluginListFP(u32 PluginType);
|
|
typedef PluginInfoList* EXPORT_CALL GetMapleDeviceListFP(u32 DeviceType);
|
|
typedef s32 EXPORT_CALL FreePluginListFP(PluginInfoList* list);
|
|
|
|
typedef s32 EXPORT_CALL dbgWriteMemFP(u32 addr,u32 sz,void* dst);
|
|
|
|
typedef s32 EXPORT_CALL dbgReadMemFP(u32 addr,u32 sz,void* dst);
|
|
typedef s32 EXPORT_CALL dbgWriteMemFP(u32 addr,u32 sz,void* dst);
|
|
typedef int EXPORT_CALL guiMsgBoxFP(char* text,int type);
|
|
|
|
typedef bool EXPORT_CALL EmuStartedFP(); //returns if emulation is started.
|
|
|
|
typedef bool EXPORT_CALL EmuInitFP();
|
|
|
|
typedef bool EXPORT_CALL EmuStartFP(); //returns false if it failed.It can fail if non inited and implicit init failed.
|
|
typedef void EXPORT_CALL EmuStopFP();
|
|
typedef bool EXPORT_CALL EmuResetFP(bool Manual); //well duh it resets =P.
|
|
typedef void EXPORT_CALL EmuResetCachesFP(); //resets any emulation caches, like dynarec's translation buffer and lookup cache
|
|
|
|
typedef bool EXPORT_CALL EmuStepFP(); //returns false if it failed.It can fail if non inited or allready running.
|
|
typedef bool EXPORT_CALL EmuSkipFP(); //returns false if it failed.It can fail if non inited or allready running.
|
|
|
|
typedef void EXPORT_CALL EmuSetPatchFP(u32 Value,u32 Mask); //Enable/Disable a patch (system area hooks)
|
|
|
|
|
|
typedef bool EXPORT_CALL EmuBootHLEFP(); //Copies the bin file from the disc , descrambles it if needed and sets up needed regs for boot.False if it failed.
|
|
typedef bool EXPORT_CALL EmuLoadBinaryFP(char* file,u32 address); //Loads a binary on the address.If the file is elf the address is ingored and the elf's
|
|
//offsets are used
|
|
typedef bool EXPORT_CALL EmuSelectPluginsFP(); //Request the emu to show the select plugins interface
|
|
typedef void EXPORT_CALL EmuStartProfilerFP(); //Start the TBP
|
|
typedef void EXPORT_CALL EmuStopProfilerFP(); //Stop the TBP
|
|
|
|
typedef void EXPORT_CALL DissasembleOpcodeFP(u16 opcode,u32 pc,char* Dissasm);
|
|
typedef u32 EXPORT_CALL Sh4GetRegisterFP(u32 reg);
|
|
typedef void EXPORT_CALL Sh4SetRegisterFP(u32 reg,u32 value);
|
|
typedef int EXPORT_CALL GetSymbNameFP(u32 address,char *szDesc,bool bUseUnkAddress);
|
|
typedef bool EXPORT_CALL SelectPluginsGuiFP();
|
|
typedef s32 EXPORT_CALL EditEmuSettingFP(u32 sid,void* value);
|
|
typedef char* EXPORT_CALL GetAboutTextFP();
|
|
typedef void EXPORT_CALL GetEmuPerformanceInfoFP(nullDCPerfomanceInfo* dst);
|
|
|
|
struct gui_emu_info
|
|
{
|
|
ConfigLoadStrFP* ConfigLoadStr; //Can be used to Read/Write settings :)
|
|
ConfigSaveStrFP* ConfigSaveStr;
|
|
ConfigLoadIntFP* ConfigLoadInt;
|
|
ConfigSaveIntFP* ConfigSaveInt;
|
|
ConfigExistsFP* ConfigExists;
|
|
|
|
dbgReadMemFP* dbgReadMem;
|
|
dbgWriteMemFP* dbgWriteMem;
|
|
|
|
EmuStartedFP* EmuStarted;
|
|
|
|
EmuInitFP* EmuInit;
|
|
|
|
EmuStartFP* EmuStart;
|
|
EmuStopFP* EmuStop;
|
|
EmuResetFP* EmuReset;
|
|
EmuResetCachesFP* EmuResetCaches;
|
|
|
|
EmuStepFP* EmuStep;
|
|
EmuSkipFP* EmuSkip;
|
|
|
|
EmuSetPatchFP* EmuSetPatch;
|
|
|
|
|
|
EmuBootHLEFP* EmuBootHLE;
|
|
EmuLoadBinaryFP* EmuLoadBinary;
|
|
|
|
EmuSelectPluginsFP* EmuSelectPlugins;
|
|
EmuStartProfilerFP* EmuStartProfiler;
|
|
EmuStopProfilerFP* EmuStopProfiler;
|
|
|
|
DissasembleOpcodeFP* DissasembleOpcode;
|
|
Sh4GetRegisterFP* Sh4GetRegister;
|
|
Sh4SetRegisterFP* Sh4SetRegister;
|
|
GetSymbNameFP* GetSymbName;
|
|
|
|
EditEmuSettingFP* GetSetting;
|
|
EditEmuSettingFP* SetSetting;
|
|
GetAboutTextFP* GetAboutText;
|
|
|
|
GetPluginListFP* GetPluginList;
|
|
GetMapleDeviceListFP* GetMapleDeviceList;
|
|
FreePluginListFP* FreePluginList;
|
|
|
|
GetEmuPerformanceInfoFP* GetPerformanceInfo;
|
|
SendMsgFP* BroardcastEvent;
|
|
void* EmuThread;
|
|
int nCmdShow;
|
|
};
|
|
struct MenuIDList
|
|
{
|
|
u32 PowerVR;
|
|
u32 GDRom;
|
|
u32 Aica;
|
|
u32 Arm;
|
|
u32 Maple;
|
|
u32 Maple_port[4][6];
|
|
u32 ExtDev;
|
|
u32 Debug;
|
|
};
|
|
|
|
typedef s32 EXPORT_CALL GuiLoadFP(gui_emu_info* emu);
|
|
typedef void EXPORT_CALL GuiUnloadFP();
|
|
|
|
typedef void EXPORT_CALL GuiMainloopFP();
|
|
typedef void EXPORT_CALL GetMenuIDsFP(MenuIDList* mil);
|
|
typedef void EXPORT_CALL DeleteAllMenuItemChildsFP(u32 id);
|
|
|
|
struct gui_plugin_info
|
|
{
|
|
u32 InterfaceVersion;
|
|
char Name[128];
|
|
|
|
GuiLoadFP* Load;
|
|
GuiUnloadFP* Unload;
|
|
GuiMainloopFP* Mainloop;
|
|
GetMenuIDsFP* GetMenuIDs;
|
|
guiMsgBoxFP* MsgBox;
|
|
GetRenderTargetFP* GetRenderTarget;
|
|
SelectPluginsGuiFP* SelectPluginsGui;
|
|
|
|
AddMenuItemFP* AddMenuItem;
|
|
SetMenuItemStyleFP* SetMenuItemStyle;
|
|
SetMenuItemFP* SetMenuItem;
|
|
GetMenuItemFP* GetMenuItem;
|
|
DeleteMenuItemFP* DeleteMenuItem;
|
|
DeleteAllMenuItemChildsFP* DeleteAllMenuItemChilds;
|
|
|
|
EventHandlerFP* EventHandler;
|
|
};
|
|
|
|
typedef void EXPORT_CALL ndcGetInterfaceFP(gui_plugin_info* gpi);
|
|
|
|
#define GuiPluginInterfaceVersion DC_MakeVersion(1,0,0); |