nulldc-360/nullDC/plugins/gui_plugin_header.h

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);