2 Copyright (C) 2002 Rice1964
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License
6 as published by the Free Software Foundation; either version 2
7 of the License, or (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 #ifndef _DLLINTERFACE_H_
21 #define _DLLINTERFACE_H_
23 #define M64P_PLUGIN_PROTOTYPES 1
25 #include "m64p_config.h"
26 #include "m64p_plugin.h"
27 #include "m64p_vidext.h"
30 float fViWidth, fViHeight;
31 unsigned short uViWidth, uViHeight;
32 unsigned short uDisplayWidth, uDisplayHeight;
33 unsigned short uDisplayX, uDisplayY;
36 BOOL bDisplayFullscreen;
40 int vpLeftW, vpTopW, vpRightW, vpBottomW, vpWidthW, vpHeightW;
42 int statusBarHeight, statusBarHeightToUse, toolbarHeight, toolbarHeightToUse;
43 BOOL screenSaverStatus;
56 float fps; // frame per second
57 float dps; // dlist per second
58 uint32 lastSecFrameCount;
59 uint32 lastSecDlistCount;
89 uint32 SPCycleCount; // Count how many CPU cycles SP used in this DLIST
90 uint32 DPCycleCount; // Count how many CPU cycles DP used in this DLIST
92 uint32 dwNumTrisRendered;
93 uint32 dwNumDListsCulled;
94 uint32 dwNumTrisClipped;
96 uint32 dwBiggestVertexIndex;
102 BOOL ToToggleFullScreen;
104 uint32 gNewResizeWidth, gNewResizeHeight;
107 bool bUseModifiedUcodeMap;
108 bool ucodeHasBeenSet;
111 uint32 curRenderBuffer;
112 uint32 curDisplayBuffer;
113 uint32 curVIOriginReg;
114 CurScissorType curScissor;
116 PrimitiveType primitiveType;
118 uint32 lastPurgeTimeTime; // Time textures were last purged
120 bool UseLargerTile[2]; // This is a speed up for large tile loading,
121 uint32 LargerTileRealLeft[2]; // works only for TexRect, LoadTile, large width, large pitch
123 bool bVIOriginIsUpdated;
124 bool bCIBufferIsRendered;
125 int leftRendered,topRendered,rightRendered,bottomRendered;
129 bool isVertexShaderSupported;
133 bool isVertexShaderEnabled;
134 bool bUseHW_T_L; // Use hardware T&L, for debug purpose only
138 bool bAllowLoadFromTMEM;
140 // Frame buffer simulation related status variables
141 bool bN64FrameBufferIsUsed; // Frame buffer is used in the frame
142 bool bN64IsDrawingTextureBuffer; // The current N64 game is rendering into render_texture, to create self-rendering texture
143 bool bHandleN64RenderTexture; // Do we need to handle of the N64 render_texture stuff?
144 bool bDirectWriteIntoRDRAM; // When drawing into render_texture, this value =
145 // = true don't render, but write real N64 graphic value into RDRAM
146 // = false rendering into render_texture of DX or OGL, the render_texture
147 // will be copied into RDRAM at the end
148 bool bFrameBufferIsDrawn; // flag to mark if the frame buffer is ever drawn
149 bool bFrameBufferDrawnByTriangles; // flag to tell if the buffer is even drawn by Triangle cmds
155 #define MI_INTR_DP 0x00000020
156 #define MI_INTR_SP 0x00000001
158 extern PluginStatus status;
159 extern GFX_INFO g_GraphicsInfo;
160 extern WindowSettingStruct windowSetting;
162 extern unsigned int g_dwRamSize;
163 extern unsigned int *g_pRDRAMu32;
164 extern signed char *g_pRDRAMs8;
165 extern unsigned char *g_pRDRAMu8;
167 /* declarations of pointers to Core config functions */
168 extern ptr_ConfigListSections ConfigListSections;
169 extern ptr_ConfigOpenSection ConfigOpenSection;
170 extern ptr_ConfigListParameters ConfigListParameters;
171 extern ptr_ConfigSaveFile ConfigSaveFile;
172 extern ptr_ConfigSetParameter ConfigSetParameter;
173 extern ptr_ConfigGetParameter ConfigGetParameter;
174 extern ptr_ConfigGetParameterHelp ConfigGetParameterHelp;
175 extern ptr_ConfigSetDefaultInt ConfigSetDefaultInt;
176 extern ptr_ConfigSetDefaultFloat ConfigSetDefaultFloat;
177 extern ptr_ConfigSetDefaultBool ConfigSetDefaultBool;
178 extern ptr_ConfigSetDefaultString ConfigSetDefaultString;
179 extern ptr_ConfigGetParamInt ConfigGetParamInt;
180 extern ptr_ConfigGetParamFloat ConfigGetParamFloat;
181 extern ptr_ConfigGetParamBool ConfigGetParamBool;
182 extern ptr_ConfigGetParamString ConfigGetParamString;
184 extern ptr_ConfigGetSharedDataFilepath ConfigGetSharedDataFilepath;
185 extern ptr_ConfigGetUserConfigPath ConfigGetUserConfigPath;
186 extern ptr_ConfigGetUserDataPath ConfigGetUserDataPath;
187 extern ptr_ConfigGetUserCachePath ConfigGetUserCachePath;
189 /* declarations of pointers to Core video extension functions */
190 extern ptr_VidExt_Init CoreVideo_Init;
191 extern ptr_VidExt_Quit CoreVideo_Quit;
192 extern ptr_VidExt_ListFullscreenModes CoreVideo_ListFullscreenModes;
193 extern ptr_VidExt_SetVideoMode CoreVideo_SetVideoMode;
194 extern ptr_VidExt_SetCaption CoreVideo_SetCaption;
195 extern ptr_VidExt_ToggleFullScreen CoreVideo_ToggleFullScreen;
196 extern ptr_VidExt_ResizeWindow CoreVideo_ResizeWindow;
197 extern ptr_VidExt_GL_GetProcAddress CoreVideo_GL_GetProcAddress;
198 extern ptr_VidExt_GL_SetAttribute CoreVideo_GL_SetAttribute;
199 extern ptr_VidExt_GL_GetAttribute CoreVideo_GL_GetAttribute;
200 extern ptr_VidExt_GL_SwapBuffers CoreVideo_GL_SwapBuffers;
202 /* global functions provided by Video.cpp */
203 extern char generalText[];
204 extern void (*renderCallback)(int);
205 void DebugMessage(int level, const char *message, ...);
208 extern void _VIDEO_DisplayTemporaryMessage2(const char *msg, ...);
209 extern void _VIDEO_DisplayTemporaryMessage(const char *msg);
210 extern void XBOX_Debugger_Log(const char *Message, ...);