liyujie
2025-08-28 b3810562527858a3b3d98ffa6e9c9c5b0f4a9a8e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//    http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
 
#include "Direct3D8.hpp"
 
#include "resource.h"
 
#include <stdio.h>
#include <assert.h>
 
extern "C"
{
   HINSTANCE dllInstance;
 
   int    __stdcall DllMain(HINSTANCE    instance, unsigned long    reason,    void *reserved)
   {
       dllInstance    = instance;
 
       switch(reason)
       {
       case DLL_PROCESS_DETACH:
           break;
       case DLL_PROCESS_ATTACH:
           DisableThreadLibraryCalls(instance);
           break;
       case DLL_THREAD_ATTACH:
           break;
       case DLL_THREAD_DETACH:
           break;
       default:
           SetLastError(ERROR_INVALID_PARAMETER);
           return FALSE;
       }
 
       return TRUE;
   }
 
   IDirect3D8 *__stdcall Direct3DCreate8(unsigned int version)
   {
       // D3D_SDK_VERSION check
       if(version != 120 &&   // 8.0
          version != 220)     // 8.1
       {
           return 0;
       }
       
       #ifndef NDEBUG
           FILE *file = fopen("debug.txt", "w");   // Clear debug log
           fclose(file);
       #endif
 
       IDirect3D8 *device = new D3D8::Direct3D8(version, dllInstance);
 
       if(device)
       {
           device->AddRef();
       }
 
       return device;
   }
 
   int __stdcall CheckFullscreen()   // FIXME: __cdecl or __stdcall?
   {
       #ifndef NDEBUG
       //    ASSERT(false);   // FIXME
       #endif
 
       return FALSE;
   }
 
    void __cdecl DebugSetMute(long mute)   // FIXME: Return type
   {
   //    ASSERT(false);   // FIXME
   }
 
    int __stdcall ValidatePixelShader(long *shader, int x, int y, int z)   // FIXME: __cdecl or __stdcall?   // FIXME: Argument meanings
   {
   //    ASSERT(false);   // FIXME
 
       return TRUE;
   }
 
    int __stdcall ValidateVertexShader(long *shader, int x, int y, int z)   // FIXME: __cdecl or __stdcall?   // FIXME: Argument meanings
   {
   //    ASSERT(false);   // FIXME
 
       return TRUE;
   }
}