<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mupen64plus.org/wiki/index.php?action=history&amp;feed=atom&amp;title=Mupen64Plus_v2.0_headers</id>
	<title>Mupen64Plus v2.0 headers - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mupen64plus.org/wiki/index.php?action=history&amp;feed=atom&amp;title=Mupen64Plus_v2.0_headers"/>
	<link rel="alternate" type="text/html" href="https://mupen64plus.org/wiki/index.php?title=Mupen64Plus_v2.0_headers&amp;action=history"/>
	<updated>2026-10-18T14:41:42Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://mupen64plus.org/wiki/index.php?title=Mupen64Plus_v2.0_headers&amp;diff=14&amp;oldid=prev</id>
		<title>Richard42: Created page with &quot;== m64p_types.h ==  /* ----------------------------------------- */  /* Platform-specific stuff                   */  /* ----------------------------------------- */    /* nec...&quot;</title>
		<link rel="alternate" type="text/html" href="https://mupen64plus.org/wiki/index.php?title=Mupen64Plus_v2.0_headers&amp;diff=14&amp;oldid=prev"/>
		<updated>2015-07-22T03:48:58Z</updated>

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