Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/libmupen64plus/mupen64plus-video-jabo/main.cpp
2 views
1
/* Mupen64plus-video-jabo */
2
3
#include <windows.h>
4
#include <stdio.h>
5
#include <stdlib.h>
6
#include <iostream>
7
#include <fstream>
8
#include <iomanip>
9
10
#define M64P_PLUGIN_PROTOTYPES 1
11
#include "m64p_types.h"
12
#include "m64p_plugin.h"
13
#include "m64p_common.h"
14
#include "m64p_config.h"
15
16
#include "main.h"
17
#include "typedefs.h"
18
#include "Config.h"
19
20
//#define LOG(x) { std::ofstream myfile; myfile.open ("jabo_wrapper_log.txt", std::ios::app); myfile << x << "\n"; myfile.close(); }
21
#define LOG(x)
22
23
namespace OldAPI
24
{
25
#include "jabo_api.h"
26
ptr_InitiateGFX InitiateGFX = NULL;
27
ptr_ProcessDList ProcessDList = NULL;
28
ptr_ProcessRDPList ProcessRDPList = NULL;
29
ptr_ShowCFB ShowCFB = NULL;
30
ptr_ViStatusChanged ViStatusChanged = NULL;
31
ptr_ViWidthChanged ViWidthChanged = NULL;
32
ptr_RomOpen RomOpen = NULL;
33
ptr_RomClosed RomClosed = NULL;
34
ptr_CloseDLL CloseDLL = NULL;
35
36
ptr_DrawScreen DrawScreen = NULL;
37
ptr_MoveScreen MoveScreen = NULL;
38
ptr_UpdateScreen UpdateScreen = NULL;
39
ptr_DllConfig DllConfig = NULL;
40
ptr_GetDllInfo GetDllInfo = NULL;
41
}
42
43
ptr_ConfigOpenSection ConfigOpenSection = NULL;
44
ptr_ConfigSetParameter ConfigSetParameter = NULL;
45
ptr_ConfigGetParameter ConfigGetParameter = NULL;
46
ptr_ConfigGetParameterHelp ConfigGetParameterHelp = NULL;
47
ptr_ConfigSetDefaultInt ConfigSetDefaultInt = NULL;
48
ptr_ConfigSetDefaultFloat ConfigSetDefaultFloat = NULL;
49
ptr_ConfigSetDefaultBool ConfigSetDefaultBool = NULL;
50
ptr_ConfigSetDefaultString ConfigSetDefaultString = NULL;
51
ptr_ConfigGetParamInt ConfigGetParamInt = NULL;
52
ptr_ConfigGetParamFloat ConfigGetParamFloat = NULL;
53
ptr_ConfigGetParamBool ConfigGetParamBool = NULL;
54
ptr_ConfigGetParamString ConfigGetParamString = NULL;
55
56
/* local variables */
57
static void (*l_DebugCallback)(void *, int, const char *) = NULL;
58
static void *l_DebugCallContext = NULL;
59
static int l_PluginInit = 0;
60
61
HMODULE JaboDLL;
62
63
HMODULE D3D8Dll;
64
65
typedef void (*ptr_D3D8_SetRenderingCallback)(void (*callback)(int));
66
ptr_D3D8_SetRenderingCallback D3D8_SetRenderingCallback = NULL;
67
typedef void (*ptr_D3D8_ReadScreen)(void *dest, int *width, int *height);
68
ptr_D3D8_ReadScreen D3D8_ReadScreen = NULL;
69
typedef void (*ptr_D3D8_CloseDLL)();
70
ptr_D3D8_CloseDLL D3D8_CloseDLL = NULL;
71
72
DWORD old_options;
73
DWORD old_initflags;
74
75
void setup_jabo_functions()
76
{
77
JaboDLL = LoadLibrary("Jabo_Direct3D8_patched.dll");
78
79
if (JaboDLL != NULL)
80
{
81
OldAPI::InitiateGFX = (OldAPI::ptr_InitiateGFX)GetProcAddress(JaboDLL,"InitiateGFX");
82
OldAPI::ProcessDList = (OldAPI::ptr_ProcessDList)GetProcAddress(JaboDLL,"ProcessDList");
83
OldAPI::ProcessRDPList = (OldAPI::ptr_ProcessRDPList)GetProcAddress(JaboDLL,"ProcessRDPList");
84
OldAPI::ShowCFB = (OldAPI::ptr_ShowCFB)GetProcAddress(JaboDLL,"ShowCFB");
85
OldAPI::ViStatusChanged = (OldAPI::ptr_ViStatusChanged)GetProcAddress(JaboDLL,"ViStatusChanged");
86
OldAPI::ViWidthChanged = (OldAPI::ptr_ViWidthChanged)GetProcAddress(JaboDLL,"ViWidthChanged");
87
OldAPI::RomOpen = (OldAPI::ptr_RomOpen)GetProcAddress(JaboDLL,"RomOpen");
88
OldAPI::RomClosed = (OldAPI::ptr_RomClosed)GetProcAddress(JaboDLL,"RomClosed");
89
OldAPI::CloseDLL = (OldAPI::ptr_CloseDLL)GetProcAddress(JaboDLL,"CloseDLL");
90
91
OldAPI::DrawScreen = (OldAPI::ptr_DrawScreen)GetProcAddress(JaboDLL,"DrawScreen");
92
OldAPI::MoveScreen = (OldAPI::ptr_MoveScreen)GetProcAddress(JaboDLL,"MoveScreen");
93
OldAPI::UpdateScreen = (OldAPI::ptr_UpdateScreen)GetProcAddress(JaboDLL,"UpdateScreen");
94
OldAPI::DllConfig = (OldAPI::ptr_DllConfig)GetProcAddress(JaboDLL,"DllConfig");
95
OldAPI::GetDllInfo = (OldAPI::ptr_GetDllInfo)GetProcAddress(JaboDLL,"GetDllInfo");
96
}
97
98
D3D8Dll = LoadLibrary("D3D8.dll");
99
if (D3D8Dll != NULL)
100
{
101
D3D8_SetRenderingCallback = (ptr_D3D8_SetRenderingCallback)GetProcAddress(D3D8Dll,"SetRenderingCallback");
102
D3D8_ReadScreen = (ptr_D3D8_ReadScreen)GetProcAddress(D3D8Dll,"ReadScreen");
103
D3D8_CloseDLL = (ptr_D3D8_CloseDLL)GetProcAddress(D3D8Dll,"CloseDLL");
104
}
105
}
106
107
BOOL readOptionsInitflags (DWORD* options_val, DWORD* initflags_val)
108
{
109
HKEY mainkey;
110
if (RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\JaboSoft\\Project64 DLL\\Direct3D8 1.6.1",0,KEY_READ,&mainkey) != ERROR_SUCCESS)
111
{
112
// key doesn't exist, so we need to create it first
113
if (RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\JaboSoft\\Project64 DLL\\Direct3D8 1.6.1",NULL,NULL,NULL,KEY_READ,NULL,&mainkey,NULL) != ERROR_SUCCESS)
114
{
115
// Couldn't create the key
116
printf("readOptionsInitflags: Couldn't create the key\n");
117
return (FALSE);
118
}
119
}
120
121
// Key exists, try to find the Options Value
122
DWORD type;
123
DWORD cbData;
124
int options_value;
125
LSTATUS result = RegQueryValueEx(mainkey, "Options", NULL, &type, (LPBYTE)&options_value, &cbData);
126
if (result != ERROR_SUCCESS)
127
{
128
options_value = 0;
129
printf("readOptionsInitflags: fail A\n");
130
}
131
*options_val = options_value;
132
133
// Try to find the Direct3D init flags subkey Value
134
int initflags_value;
135
result = RegQueryValueEx(mainkey, "Direct3D8.InitFlags", NULL, &type, (LPBYTE)&initflags_value, &cbData);
136
if (result != ERROR_SUCCESS)
137
{
138
printf("readOptionsInitflags: fail B\n");
139
initflags_value = 0x00e00000;
140
}
141
*initflags_val = initflags_value;
142
143
RegCloseKey(mainkey);
144
return(TRUE);
145
}
146
147
BOOL writeOptionsInitflags(DWORD options_val, DWORD initflags_val)
148
{
149
// Open the key for writing
150
HKEY mainkey;
151
if (RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\JaboSoft\\Project64 DLL\\Direct3D8 1.6.1",0,KEY_WRITE,&mainkey) != ERROR_SUCCESS)
152
{
153
printf("writeOptionsInitflags: Failure to open key for write\n");
154
return (FALSE);
155
}
156
157
// Store our options value
158
DWORD new_val = options_val;
159
if (RegSetValueEx(mainkey, "Options", NULL, REG_DWORD, (BYTE *)&new_val, 4) != ERROR_SUCCESS)
160
{
161
printf("writeOptionsInitflags: Couldn't write options value\n");
162
}
163
164
// Store our init flags value
165
new_val = initflags_val;
166
if (RegSetValueEx(mainkey, "Direct3D8.InitFlags", NULL, REG_DWORD, (BYTE *)&new_val, 4) != ERROR_SUCCESS)
167
{
168
LOG("writeOptionsInitflags: Couldn't write init flags value");
169
}
170
171
RegCloseKey(mainkey);
172
return(TRUE);
173
}
174
175
void createRDBFile(unsigned char * header, int resolution_width, int resolution_height, int clear_mode)
176
{
177
std::ofstream rdbFile;
178
rdbFile.open("Project64.rdb", std::ios::trunc | std::ios::out);
179
180
// File can't seem to have data on the first line. It has to be a comment or blank
181
rdbFile << "\n";
182
183
rdbFile << "[";
184
185
rdbFile << std::hex << std::setfill('0') << std::setw(2) << std::uppercase;
186
rdbFile << (int)header[16] << (int)header[17] << (int)header[18] << (int)header[19];
187
rdbFile << "-";
188
rdbFile << (int)header[20] << (int)header[21] << (int)header[22] << (int)header[23];
189
rdbFile << "-C:";
190
rdbFile << (int)header[62] << "]\n";
191
192
rdbFile << std::dec << std::nouppercase;
193
rdbFile << "Clear Frame=" << clear_mode << "\n";
194
rdbFile << "Resolution Width=" << resolution_width << "\n";
195
rdbFile << "Resolution Height=" << resolution_height << "\n";
196
rdbFile.close();
197
}
198
199
/* Global functions */
200
static void DebugMessage(int level, const char *message, ...)
201
{
202
char msgbuf[1024];
203
va_list args;
204
205
if (l_DebugCallback == NULL)
206
return;
207
208
va_start(args, message);
209
vsprintf(msgbuf, message, args);
210
211
(*l_DebugCallback)(l_DebugCallContext, level, msgbuf);
212
213
va_end(args);
214
}
215
216
#pragma region (De-)Initialization
217
218
/* Mupen64Plus plugin functions */
219
EXPORT m64p_error CALL PluginStartup(m64p_dynlib_handle CoreLibHandle, void *Context,
220
void (*DebugCallback)(void *, int, const char *))
221
{
222
LOG("API WRAPPER:\t PluginStartup")
223
setup_jabo_functions();
224
225
ptr_CoreGetAPIVersions CoreAPIVersionFunc;
226
227
int ConfigAPIVersion, DebugAPIVersion, VidextAPIVersion;
228
229
if (l_PluginInit)
230
return M64ERR_ALREADY_INIT;
231
232
/* first thing is to set the callback function for debug info */
233
l_DebugCallback = DebugCallback;
234
l_DebugCallContext = Context;
235
236
/* attach and call the CoreGetAPIVersions function, check Config API version for compatibility */
237
CoreAPIVersionFunc = (ptr_CoreGetAPIVersions) GetProcAddress(CoreLibHandle, "CoreGetAPIVersions");
238
239
if (CoreAPIVersionFunc == NULL)
240
{
241
DebugMessage(M64MSG_ERROR, "Core emulator broken; no CoreAPIVersionFunc() function found.");
242
return M64ERR_INCOMPATIBLE;
243
}
244
245
(*CoreAPIVersionFunc)(&ConfigAPIVersion, &DebugAPIVersion, &VidextAPIVersion, NULL);
246
if ((ConfigAPIVersion & 0xffff0000) != (CONFIG_API_VERSION & 0xffff0000))
247
{
248
DebugMessage(M64MSG_ERROR, "Emulator core Config API (v%i.%i.%i) incompatible with plugin (v%i.%i.%i)",
249
VERSION_PRINTF_SPLIT(ConfigAPIVersion), VERSION_PRINTF_SPLIT(CONFIG_API_VERSION));
250
return M64ERR_INCOMPATIBLE;
251
}
252
253
ConfigOpenSection = (ptr_ConfigOpenSection) GetProcAddress(CoreLibHandle, "ConfigOpenSection");
254
ConfigSetParameter = (ptr_ConfigSetParameter) GetProcAddress(CoreLibHandle, "ConfigSetParameter");
255
ConfigGetParameter = (ptr_ConfigGetParameter) GetProcAddress(CoreLibHandle, "ConfigGetParameter");
256
ConfigSetDefaultInt = (ptr_ConfigSetDefaultInt) GetProcAddress(CoreLibHandle, "ConfigSetDefaultInt");
257
ConfigSetDefaultFloat = (ptr_ConfigSetDefaultFloat) GetProcAddress(CoreLibHandle, "ConfigSetDefaultFloat");
258
ConfigSetDefaultBool = (ptr_ConfigSetDefaultBool) GetProcAddress(CoreLibHandle, "ConfigSetDefaultBool");
259
ConfigSetDefaultString = (ptr_ConfigSetDefaultString) GetProcAddress(CoreLibHandle, "ConfigSetDefaultString");
260
ConfigGetParamInt = (ptr_ConfigGetParamInt) GetProcAddress(CoreLibHandle, "ConfigGetParamInt");
261
ConfigGetParamFloat = (ptr_ConfigGetParamFloat) GetProcAddress(CoreLibHandle, "ConfigGetParamFloat");
262
ConfigGetParamBool = (ptr_ConfigGetParamBool) GetProcAddress(CoreLibHandle, "ConfigGetParamBool");
263
ConfigGetParamString = (ptr_ConfigGetParamString) GetProcAddress(CoreLibHandle, "ConfigGetParamString");
264
265
l_PluginInit = 1;
266
return M64ERR_SUCCESS;
267
}
268
269
EXPORT m64p_error CALL PluginShutdown(void)
270
{
271
LOG("API WRAPPER:\t PluginShutdown")
272
OldAPI::CloseDLL();
273
274
D3D8_CloseDLL();
275
FreeLibrary(D3D8Dll);
276
FreeLibrary(JaboDLL);
277
278
writeOptionsInitflags(old_options,old_initflags);
279
280
if (!l_PluginInit)
281
return M64ERR_NOT_INIT;
282
283
/* reset some local variables */
284
l_DebugCallback = NULL;
285
l_DebugCallContext = NULL;
286
287
l_PluginInit = 0;
288
return M64ERR_SUCCESS;
289
}
290
291
EXPORT int CALL RomOpen(void)
292
{
293
LOG("API WRAPPER:\t RomOpen")
294
OldAPI::RomOpen();
295
296
remove("Project64.rdb");
297
298
if (!l_PluginInit)
299
return 0;
300
301
return 1;
302
}
303
304
EXPORT void CALL RomClosed( void )
305
{
306
LOG("API WRAPPER:\t RomClosed")
307
OldAPI::RomClosed();
308
309
if (!l_PluginInit)
310
return;
311
}
312
313
#pragma endregion
314
315
#pragma region Pluginversion
316
EXPORT m64p_error CALL PluginGetVersion(m64p_plugin_type *PluginType, int *PluginVersion, int *APIVersion, const char **PluginNamePtr, int *Capabilities)
317
{
318
LOG("API WRAPPER:\t PluginGetVersion")
319
320
OldAPI::PLUGIN_INFO info;
321
OldAPI::GetDllInfo(&info);
322
323
/* set version info */
324
if (PluginType != NULL)
325
*PluginType = M64PLUGIN_GFX;
326
327
if (PluginVersion != NULL)
328
*PluginVersion = PLUGIN_VERSION;
329
330
if (APIVersion != NULL)
331
*APIVersion = VIDEO_PLUGIN_API_VERSION;
332
333
if (PluginNamePtr != NULL)
334
*PluginNamePtr = PLUGIN_NAME;
335
336
if (Capabilities != NULL)
337
{
338
*Capabilities = 0;
339
}
340
341
return M64ERR_SUCCESS;
342
}
343
#pragma endregion
344
345
// IGNORE
346
EXPORT void CALL ChangeWindow (void)
347
{
348
LOG("API WRAPPER:\t ChangeWindow")
349
}
350
351
// NOTE: NEW GFX_INFO vs old
352
EXPORT int CALL InitiateGFX(GFX_INFO Gfx_Info)
353
{
354
LOG("API WRAPPER:\t InitiateGFX")
355
356
Config_Open();
357
358
SETTINGS settings;
359
settings.anisotropic_level = (int)Config_ReadInt("anisotropic_level","ANISOTROPIC_FILTERING_LEVEL",0,TRUE,FALSE);
360
settings.brightness = (int)Config_ReadInt("brightness","Brightness level",0,TRUE,FALSE);
361
settings.antialiasing_level = (int)Config_ReadInt("antialiasing_level","Antialiasing level",0,TRUE,FALSE);
362
settings.super2xsal = (BOOL)Config_ReadInt("super2xsal","Enables Super2xSal textures",FALSE);
363
settings.texture_filter = (BOOL)Config_ReadInt("texture_filter","Always use texture filter",FALSE);
364
settings.adjust_aspect_ratio = (BOOL)Config_ReadInt("adjust_aspect_ratio","Adjust game aspect ratio to match yours",FALSE);
365
settings.legacy_pixel_pipeline = (BOOL)Config_ReadInt("legacy_pixel_pipeline","Use legacy pixel pipeline",FALSE);
366
settings.alpha_blending = (BOOL)Config_ReadInt("alpha_blending","Force alpha blending",FALSE);
367
368
// As far as I can tell there is no way to apply this setting without opening the dll config window
369
//settings.wireframe = (BOOL)Config_ReadInt("wireframe","Wireframe rendering",FALSE);
370
371
settings.direct3d_transformation_pipeline = (BOOL)Config_ReadInt("direct3d_transformation_pipeline","Use Direct3D transformation pipeline",FALSE);
372
settings.z_compare = (BOOL)Config_ReadInt("z_compare","Force Z Compare",FALSE);
373
settings.copy_framebuffer = (BOOL)Config_ReadInt("copy_framebuffer","Copy framebuffer to RDRAM",FALSE);
374
settings.resolution_width = (int)Config_ReadInt("resolution_width","Emulated Width",-1,TRUE,FALSE);
375
settings.resolution_height = (int)Config_ReadInt("resolution_height","Emulated Height",-1,TRUE,FALSE);
376
settings.clear_mode = (int)Config_ReadInt("clear_mode","Direct3D Clear Mode Height",0,TRUE,FALSE);
377
378
DWORD new_options_val = 0;
379
if (settings.copy_framebuffer == TRUE) { new_options_val |= 0x20000000; }
380
if (settings.z_compare == TRUE) { new_options_val |= 0x10000000; }
381
if (settings.legacy_pixel_pipeline == TRUE) { new_options_val |= 0x08000000; }
382
if (settings.alpha_blending == TRUE) { new_options_val |= 0x04000000; }
383
if (settings.adjust_aspect_ratio == TRUE) { new_options_val |= 0x02000000; }
384
if (settings.texture_filter == TRUE) { new_options_val |= 0x01000000; }
385
if (settings.super2xsal == TRUE) { new_options_val |= 0x00001000; }
386
new_options_val |= (((settings.brightness - 100) / 3) & 0x1F) << 19;
387
switch (settings.antialiasing_level)
388
{
389
case 1: new_options_val |= 0x00004000; break;
390
case 2: new_options_val |= 0x00008000; break;
391
case 3: new_options_val |= 0x00010000; break;
392
}
393
switch (settings.anisotropic_level)
394
{
395
case 1: new_options_val |= 0x00000020; break;
396
case 2: new_options_val |= 0x00000040; break;
397
case 3: new_options_val |= 0x00000080; break;
398
case 4: new_options_val |= 0x00000100; break;
399
}
400
401
int width, height;
402
Config_ReadScreenResolution(&width,&height);
403
if (width == 320 && height == 240) { new_options_val |= 0x00000000; }
404
else if (width == 400 && height == 300) { new_options_val |= 0x00000001; }
405
else if (width == 512 && height == 384) { new_options_val |= 0x00000002; }
406
else if (width == 640 && height == 480) { new_options_val |= 0x00000003; }
407
else if (width == 800 && height == 600) { new_options_val |= 0x00000004; }
408
else if (width == 1024 && height == 768) { new_options_val |= 0x00000005; }
409
else if (width == 1152 && height == 864) { new_options_val |= 0x00000006; }
410
else if (width == 1280 && height == 960) { new_options_val |= 0x00000007; }
411
else if (width == 1600 && height == 1200) { new_options_val |= 0x00000008; }
412
else if (width == 848 && height == 480) { new_options_val |= 0x00000009; }
413
else if (width == 1024 && height == 576) { new_options_val |= 0x0000000a; }
414
else if (width == 1380 && height == 768) { new_options_val |= 0x0000000b; }
415
else { /* will pick 320x240 */ }
416
417
DWORD new_initflags_val = 0x00e00000;
418
if (settings.direct3d_transformation_pipeline == TRUE) { new_initflags_val = 0x00a00000; }
419
420
readOptionsInitflags(&old_options,&old_initflags);
421
422
writeOptionsInitflags(new_options_val,new_initflags_val);
423
424
createRDBFile(Gfx_Info.HEADER, settings.resolution_height, settings.resolution_width, settings.clear_mode);
425
426
OldAPI::GFX_INFO blah;
427
428
blah.hWnd = GetDesktopWindow();
429
blah.hStatusBar = NULL;
430
blah.MemoryBswaped = true;
431
432
blah.HEADER = Gfx_Info.HEADER;
433
434
blah.RDRAM = Gfx_Info.RDRAM;
435
blah.DMEM = Gfx_Info.DMEM;
436
blah.IMEM = Gfx_Info.IMEM;
437
438
blah.MI_INTR_REG = (DWORD *)Gfx_Info.MI_INTR_REG;
439
440
blah.DPC_START_REG = (DWORD *)Gfx_Info.DPC_START_REG;
441
blah.DPC_END_REG = (DWORD *)Gfx_Info.DPC_END_REG;
442
blah.DPC_CURRENT_REG = (DWORD *)Gfx_Info.DPC_CURRENT_REG;
443
blah.DPC_STATUS_REG = (DWORD *)Gfx_Info.DPC_STATUS_REG;
444
blah.DPC_CLOCK_REG = (DWORD *)Gfx_Info.DPC_CLOCK_REG;
445
blah.DPC_BUFBUSY_REG = (DWORD *)Gfx_Info.DPC_BUFBUSY_REG;
446
blah.DPC_PIPEBUSY_REG = (DWORD *)Gfx_Info.DPC_PIPEBUSY_REG;
447
blah.DPC_TMEM_REG = (DWORD *)Gfx_Info.DPC_TMEM_REG;
448
449
blah.VI_STATUS_REG = (DWORD *)Gfx_Info.VI_STATUS_REG;
450
blah.VI_ORIGIN_REG = (DWORD *)Gfx_Info.VI_ORIGIN_REG;
451
blah.VI_WIDTH_REG = (DWORD *)Gfx_Info.VI_WIDTH_REG;
452
blah.VI_INTR_REG = (DWORD *)Gfx_Info.VI_INTR_REG;
453
blah.VI_V_CURRENT_LINE_REG = (DWORD *)Gfx_Info.VI_V_CURRENT_LINE_REG;
454
blah.VI_TIMING_REG = (DWORD *)Gfx_Info.VI_TIMING_REG;
455
blah.VI_V_SYNC_REG = (DWORD *)Gfx_Info.VI_V_SYNC_REG;
456
blah.VI_H_SYNC_REG = (DWORD *)Gfx_Info.VI_H_SYNC_REG;
457
blah.VI_LEAP_REG = (DWORD *)Gfx_Info.VI_LEAP_REG;
458
blah.VI_H_START_REG = (DWORD *)Gfx_Info.VI_H_START_REG;
459
blah.VI_V_START_REG = (DWORD *)Gfx_Info.VI_V_START_REG;
460
blah.VI_V_BURST_REG = (DWORD *)Gfx_Info.VI_V_BURST_REG;
461
blah.VI_X_SCALE_REG = (DWORD *)Gfx_Info.VI_X_SCALE_REG;
462
blah.VI_Y_SCALE_REG = (DWORD *)Gfx_Info.VI_Y_SCALE_REG;
463
464
blah.CheckInterrupts = Gfx_Info.CheckInterrupts;
465
466
OldAPI::InitiateGFX(blah);
467
468
return(TRUE);
469
}
470
471
EXPORT void CALL MoveScreen (int xpos, int ypos)
472
{
473
LOG("API WRAPPER:\t MoveScreen")
474
OldAPI::MoveScreen(xpos, ypos);
475
}
476
477
EXPORT void CALL ProcessDList(void)
478
{
479
LOG("API WRAPPER:\t ProcessDList")
480
OldAPI::ProcessDList();
481
}
482
483
EXPORT void CALL ProcessRDPList(void)
484
{
485
LOG("API WRAPPER:\t ProcessRDPList")
486
OldAPI::ProcessRDPList();
487
}
488
489
EXPORT void CALL ShowCFB(void)
490
{
491
LOG("API WRAPPER:\t ShowCFB")
492
OldAPI::ShowCFB();
493
}
494
495
EXPORT void CALL UpdateScreen(void)
496
{
497
LOG("API WRAPPER:\t UpdateScreen")
498
OldAPI::UpdateScreen();
499
}
500
501
EXPORT void CALL ViStatusChanged(void)
502
{
503
LOG("API WRAPPER:\t ViStatusChanged")
504
OldAPI::ViStatusChanged();
505
}
506
507
EXPORT void CALL ViWidthChanged(void)
508
{
509
LOG("API WRAPPER:\t ViWidthChanged")
510
OldAPI::ViWidthChanged();
511
}
512
513
EXPORT void CALL ReadScreen2(void *dest, int *width, int *height, int bFront)
514
{
515
LOG("API WRAPPER:\t ReadScreen2")
516
if (D3D8_ReadScreen != NULL)
517
{
518
D3D8_ReadScreen(dest, width, height);
519
}
520
}
521
522
EXPORT void CALL SetRenderingCallback(void (*callback)(int))
523
{
524
LOG("API WRAPPER:\t SetRenderingCallback")
525
if (D3D8_SetRenderingCallback != NULL)
526
{
527
D3D8_SetRenderingCallback(callback);
528
}
529
}
530
531
// IMPLEMENT LATER?
532
EXPORT void CALL FBRead(uint32 addr)
533
{
534
LOG("API WRAPPER:\t FBRead")
535
}
536
537
// IMPLEMENT LATER?
538
EXPORT void CALL FBWrite(uint32 addr, uint32 size)
539
{
540
LOG("API WRAPPER:\t FBWrite")
541
}
542
543
// ???
544
EXPORT void CALL FBGetFrameBufferInfo(void *p)
545
{
546
LOG("API WRAPPER:\t FBGetFrameBufferInfo")
547
//FrameBufferInfo * pinfo = (FrameBufferInfo *)p;
548
}
549
550