http://www.mupen64plus.org/wiki/index.php?title=Mupen64Plus_v2.0_headers&feed=atom&action=history
Mupen64Plus v2.0 headers - Revision history
2024-03-29T12:51:49Z
Revision history for this page on the wiki
MediaWiki 1.23.9
http://www.mupen64plus.org/wiki/index.php?title=Mupen64Plus_v2.0_headers&diff=14&oldid=prev
Richard42: Created page with "== m64p_types.h == /* ----------------------------------------- */ /* Platform-specific stuff */ /* ----------------------------------------- */ /* nec..."
2015-07-22T03:48:58Z
<p>Created page with "== m64p_types.h == /* ----------------------------------------- */ /* Platform-specific stuff */ <span dir="auto"><span class="autocomment">-----------------------------------------: </span> /* nec..."</span></p>
<p><b>New page</b></p><div>== m64p_types.h ==<br />
/* ----------------------------------------- */<br />
/* Platform-specific stuff */<br />
/* ----------------------------------------- */<br />
<br />
/* necessary headers */<br />
#if defined(WIN32)<br />
#include <windows.h><br />
#endif<br />
<br />
/* DLL handles and function declaration specifiers */<br />
#if defined(WIN32)<br />
#define IMPORT extern "C" __declspec(dllimport)<br />
#define EXPORT __declspec(dllexport)<br />
#define CALL __cdecl<br />
typedef HMODULE m64p_dynlib_handle;<br />
#else<br />
#define IMPORT extern "C"<br />
#define EXPORT __attribute__((visibility("default")))<br />
#define CALL<br />
typedef void * m64p_dynlib_handle;<br />
#endif<br />
<br />
/* ----------------------------------------- */<br />
/* Structures and Types for Core library API */<br />
/* ----------------------------------------- */<br />
<br />
typedef void * m64p_handle;<br />
<br />
typedef void (*m64p_frame_callback)(unsigned int FrameIndex);<br />
typedef void (*m64p_input_callback)(void);<br />
typedef void (*m64p_audio_callback)(void);<br />
typedef void (*m64p_vi_callback)(void);<br />
<br />
typedef enum {<br />
M64TYPE_INT = 1,<br />
M64TYPE_FLOAT,<br />
M64TYPE_BOOL,<br />
M64TYPE_STRING<br />
} m64p_type;<br />
<br />
typedef enum {<br />
M64MSG_ERROR = 1,<br />
M64MSG_WARNING,<br />
M64MSG_INFO,<br />
M64MSG_STATUS,<br />
M64MSG_VERBOSE<br />
} m64p_msg_level;<br />
<br />
typedef enum {<br />
M64ERR_SUCCESS = 0,<br />
M64ERR_NOT_INIT, /* Function is disallowed before InitMupen64Plus() is called */<br />
M64ERR_ALREADY_INIT, /* InitMupen64Plus() was called twice */<br />
M64ERR_INCOMPATIBLE, /* API versions between components are incompatible */<br />
M64ERR_INPUT_ASSERT, /* Invalid parameters for function call, such as ParamValue=NULL for GetCoreParameter() */<br />
M64ERR_INPUT_INVALID, /* Invalid input data, such as ParamValue="maybe" for SetCoreParameter() to set a BOOL-type value */<br />
M64ERR_INPUT_NOT_FOUND, /* The input parameter(s) specified a particular item which was not found */<br />
M64ERR_NO_MEMORY, /* Memory allocation failed */<br />
M64ERR_FILES, /* Error opening, creating, reading, or writing to a file */<br />
M64ERR_INTERNAL, /* Internal error (bug) */<br />
M64ERR_INVALID_STATE, /* Current program state does not allow operation */<br />
M64ERR_PLUGIN_FAIL, /* A plugin function returned a fatal error */<br />
M64ERR_SYSTEM_FAIL, /* A system function call, such as an SDL or file operation, failed */<br />
M64ERR_UNSUPPORTED, /* Function call is not supported (ie, core not built with debugger) */<br />
M64ERR_WRONG_TYPE /* A given input type parameter cannot be used for desired operation */<br />
} m64p_error;<br />
<br />
typedef enum {<br />
M64CAPS_DYNAREC = 1,<br />
M64CAPS_DEBUGGER = 2,<br />
M64CAPS_CORE_COMPARE = 4<br />
} m64p_core_caps;<br />
<br />
typedef enum {<br />
M64PLUGIN_NULL = 0,<br />
M64PLUGIN_RSP = 1,<br />
M64PLUGIN_GFX,<br />
M64PLUGIN_AUDIO,<br />
M64PLUGIN_INPUT,<br />
M64PLUGIN_CORE<br />
} m64p_plugin_type;<br />
<br />
typedef enum {<br />
M64EMU_STOPPED = 1,<br />
M64EMU_RUNNING,<br />
M64EMU_PAUSED<br />
} m64p_emu_state;<br />
<br />
typedef enum {<br />
M64VIDEO_NONE = 1,<br />
M64VIDEO_WINDOWED,<br />
M64VIDEO_FULLSCREEN<br />
} m64p_video_mode;<br />
<br />
typedef enum {<br />
M64VIDEOFLAG_SUPPORT_RESIZING = 1<br />
} m64p_video_flags;<br />
<br />
typedef enum {<br />
M64CORE_EMU_STATE = 1,<br />
M64CORE_VIDEO_MODE,<br />
M64CORE_SAVESTATE_SLOT,<br />
M64CORE_SPEED_FACTOR,<br />
M64CORE_SPEED_LIMITER,<br />
M64CORE_VIDEO_SIZE,<br />
M64CORE_AUDIO_VOLUME,<br />
M64CORE_AUDIO_MUTE,<br />
M64CORE_INPUT_GAMESHARK,<br />
M64CORE_STATE_LOADCOMPLETE,<br />
M64CORE_STATE_SAVECOMPLETE<br />
} m64p_core_param;<br />
<br />
typedef enum {<br />
M64CMD_NOP = 0,<br />
M64CMD_ROM_OPEN,<br />
M64CMD_ROM_CLOSE,<br />
M64CMD_ROM_GET_HEADER,<br />
M64CMD_ROM_GET_SETTINGS,<br />
M64CMD_EXECUTE,<br />
M64CMD_STOP,<br />
M64CMD_PAUSE,<br />
M64CMD_RESUME,<br />
M64CMD_CORE_STATE_QUERY,<br />
M64CMD_STATE_LOAD,<br />
M64CMD_STATE_SAVE,<br />
M64CMD_STATE_SET_SLOT,<br />
M64CMD_SEND_SDL_KEYDOWN,<br />
M64CMD_SEND_SDL_KEYUP,<br />
M64CMD_SET_FRAME_CALLBACK,<br />
M64CMD_TAKE_NEXT_SCREENSHOT,<br />
M64CMD_CORE_STATE_SET,<br />
M64CMD_READ_SCREEN,<br />
M64CMD_RESET,<br />
M64CMD_ADVANCE_FRAME<br />
} m64p_command;<br />
<br />
typedef struct {<br />
unsigned int address;<br />
int value;<br />
} m64p_cheat_code;<br />
<br />
/* ----------------------------------------- */<br />
/* Structures to hold ROM image information */<br />
/* ----------------------------------------- */<br />
<br />
typedef enum<br />
{<br />
SYSTEM_NTSC = 0,<br />
SYSTEM_PAL,<br />
SYSTEM_MPAL<br />
} m64p_system_type;<br />
<br />
typedef struct<br />
{<br />
unsigned char init_PI_BSB_DOM1_LAT_REG; /* 0x00 */<br />
unsigned char init_PI_BSB_DOM1_PGS_REG; /* 0x01 */<br />
unsigned char init_PI_BSB_DOM1_PWD_REG; /* 0x02 */<br />
unsigned char init_PI_BSB_DOM1_PGS_REG2; /* 0x03 */<br />
unsigned int ClockRate; /* 0x04 */<br />
unsigned int PC; /* 0x08 */<br />
unsigned int Release; /* 0x0C */<br />
unsigned int CRC1; /* 0x10 */<br />
unsigned int CRC2; /* 0x14 */<br />
unsigned int Unknown[2]; /* 0x18 */<br />
unsigned char Name[20]; /* 0x20 */<br />
unsigned int unknown; /* 0x34 */<br />
unsigned int Manufacturer_ID; /* 0x38 */<br />
unsigned short Cartridge_ID; /* 0x3C - Game serial number */<br />
unsigned short Country_code; /* 0x3E */<br />
} m64p_rom_header;<br />
<br />
typedef struct<br />
{<br />
char goodname[256];<br />
char MD5[33];<br />
unsigned char savetype;<br />
unsigned char status; /* Rom status on a scale from 0-5. */<br />
unsigned char players; /* Local players 0-4, 2/3/4 way Netplay indicated by 5/6/7. */<br />
unsigned char rumble; /* 0 - No, 1 - Yes boolean for rumble support. */<br />
} m64p_rom_settings;<br />
<br />
/* ----------------------------------------- */<br />
/* Structures and Types for the Debugger */<br />
/* ----------------------------------------- */<br />
<br />
typedef enum {<br />
M64P_DBG_RUN_STATE = 1,<br />
M64P_DBG_PREVIOUS_PC,<br />
M64P_DBG_NUM_BREAKPOINTS,<br />
M64P_DBG_CPU_DYNACORE,<br />
M64P_DBG_CPU_NEXT_INTERRUPT<br />
} m64p_dbg_state;<br />
<br />
typedef enum {<br />
M64P_DBG_RUNSTATE_PAUSED = 0,<br />
M64P_DBG_RUNSTATE_STEPPING,<br />
M64P_DBG_RUNSTATE_RUNNING<br />
} m64p_dbg_runstate;<br />
<br />
typedef enum {<br />
M64P_DBG_MEM_TYPE = 1,<br />
M64P_DBG_MEM_FLAGS,<br />
M64P_DBG_MEM_HAS_RECOMPILED,<br />
M64P_DBG_MEM_NUM_RECOMPILED,<br />
M64P_DBG_RECOMP_OPCODE = 16,<br />
M64P_DBG_RECOMP_ARGS,<br />
M64P_DBG_RECOMP_ADDR<br />
} m64p_dbg_mem_info;<br />
<br />
typedef enum {<br />
M64P_MEM_NOMEM = 0,<br />
M64P_MEM_NOTHING,<br />
M64P_MEM_RDRAM,<br />
M64P_MEM_RDRAMREG,<br />
M64P_MEM_RSPMEM,<br />
M64P_MEM_RSPREG,<br />
M64P_MEM_RSP,<br />
M64P_MEM_DP,<br />
M64P_MEM_DPS,<br />
M64P_MEM_VI,<br />
M64P_MEM_AI,<br />
M64P_MEM_PI,<br />
M64P_MEM_RI,<br />
M64P_MEM_SI,<br />
M64P_MEM_FLASHRAMSTAT,<br />
M64P_MEM_ROM,<br />
M64P_MEM_PIF,<br />
M64P_MEM_MI,<br />
M64P_MEM_BREAKPOINT<br />
} m64p_dbg_mem_type;<br />
<br />
typedef enum {<br />
M64P_MEM_FLAG_READABLE = 0x01,<br />
M64P_MEM_FLAG_WRITABLE = 0x02,<br />
M64P_MEM_FLAG_READABLE_EMUONLY = 0x04, // the EMUONLY flags signify that emulated code can read/write here, but debugger cannot<br />
M64P_MEM_FLAG_WRITABLE_EMUONLY = 0x08<br />
} m64p_dbg_mem_flags;<br />
<br />
typedef enum {<br />
M64P_DBG_PTR_RDRAM = 1,<br />
M64P_DBG_PTR_PI_REG,<br />
M64P_DBG_PTR_SI_REG,<br />
M64P_DBG_PTR_VI_REG,<br />
M64P_DBG_PTR_RI_REG,<br />
M64P_DBG_PTR_AI_REG<br />
} m64p_dbg_memptr_type;<br />
<br />
typedef enum {<br />
M64P_CPU_PC = 1,<br />
M64P_CPU_REG_REG,<br />
M64P_CPU_REG_HI,<br />
M64P_CPU_REG_LO,<br />
M64P_CPU_REG_COP0,<br />
M64P_CPU_REG_COP1_DOUBLE_PTR,<br />
M64P_CPU_REG_COP1_SIMPLE_PTR,<br />
M64P_CPU_REG_COP1_FGR_64,<br />
M64P_CPU_TLB<br />
} m64p_dbg_cpu_data;<br />
<br />
typedef enum {<br />
M64P_BKP_CMD_ADD_ADDR = 1,<br />
M64P_BKP_CMD_ADD_STRUCT,<br />
M64P_BKP_CMD_REPLACE,<br />
M64P_BKP_CMD_REMOVE_ADDR,<br />
M64P_BKP_CMD_REMOVE_IDX,<br />
M64P_BKP_CMD_ENABLE,<br />
M64P_BKP_CMD_DISABLE,<br />
M64P_BKP_CMD_CHECK<br />
} m64p_dbg_bkp_command;<br />
<br />
#define M64P_MEM_INVALID 0xFFFFFFFF // invalid memory read will return this<br />
<br />
#define BREAKPOINTS_MAX_NUMBER 128<br />
<br />
typedef enum {<br />
M64P_BKP_FLAG_ENABLED = 0x01,<br />
M64P_BKP_FLAG_READ = 0x02,<br />
M64P_BKP_FLAG_WRITE = 0x04,<br />
M64P_BKP_FLAG_EXEC = 0x08,<br />
M64P_BKP_FLAG_LOG = 0x10 /* Log to the console when this breakpoint hits. */<br />
} m64p_dbg_bkp_flags;<br />
<br />
#define BPT_CHECK_FLAG(a, b) ((a.flags & b) == b)<br />
#define BPT_SET_FLAG(a, b) a.flags = (a.flags | b);<br />
#define BPT_CLEAR_FLAG(a, b) a.flags = (a.flags & (~b));<br />
#define BPT_TOGGLE_FLAG(a, b) a.flags = (a.flags ^ b);<br />
<br />
typedef struct {<br />
unsigned int address;<br />
unsigned int endaddr;<br />
unsigned int flags;<br />
} m64p_breakpoint;<br />
<br />
/* ------------------------------------------------- */<br />
/* Structures and Types for Core Video Extension API */<br />
/* ------------------------------------------------- */<br />
<br />
typedef struct {<br />
unsigned int uiWidth;<br />
unsigned int uiHeight;<br />
} m64p_2d_size;<br />
<br />
typedef enum {<br />
M64P_GL_DOUBLEBUFFER = 1,<br />
M64P_GL_BUFFER_SIZE,<br />
M64P_GL_DEPTH_SIZE,<br />
M64P_GL_RED_SIZE,<br />
M64P_GL_GREEN_SIZE,<br />
M64P_GL_BLUE_SIZE,<br />
M64P_GL_ALPHA_SIZE,<br />
M64P_GL_SWAP_CONTROL,<br />
M64P_GL_MULTISAMPLEBUFFERS,<br />
M64P_GL_MULTISAMPLESAMPLES,<br />
M64P_GL_CONTEXT_MAJOR_VERSION,<br />
M64P_GL_CONTEXT_MINOR_VERSION,<br />
M64P_GL_CONTEXT_PROFILE_MASK<br />
} m64p_GLattr;<br />
<br />
typedef enum {<br />
M64P_GL_CONTEXT_PROFILE_CORE,<br />
M64P_GL_CONTEXT_PROFILE_COMPATIBILITY,<br />
M64P_GL_CONTEXT_PROFILE_ES<br />
} m64p_GLContextType;<br />
<br />
typedef struct {<br />
unsigned int Functions;<br />
m64p_error (*VidExtFuncInit)(void);<br />
m64p_error (*VidExtFuncQuit)(void);<br />
m64p_error (*VidExtFuncListModes)(m64p_2d_size *, int *);<br />
m64p_error (*VidExtFuncSetMode)(int, int, int, int, int);<br />
void * (*VidExtFuncGLGetProc)(const char*);<br />
m64p_error (*VidExtFuncGLSetAttr)(m64p_GLattr, int);<br />
m64p_error (*VidExtFuncGLGetAttr)(m64p_GLattr, int *);<br />
m64p_error (*VidExtFuncGLSwapBuf)(void);<br />
m64p_error (*VidExtFuncSetCaption)(const char *);<br />
m64p_error (*VidExtFuncToggleFS)(void);<br />
m64p_error (*VidExtFuncResizeWindow)(int, int);<br />
} m64p_video_extension_functions;</div>
Richard42