annotate Mouse.cpp @ 37:cad1f62f21c0

18.10.12
author Ritor1
date Thu, 18 Oct 2012 09:11:07 +0600
parents 509744251c8e
children bcc051713d20
rev   line source
0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1 #include "OSAPI.h"
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
3 #include "Mouse.h"
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
4 #include "Items.h"
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
5 #include "Party.h"
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
6 #include "LOD.h"
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
7 #include "Game.h"
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
8 #include "Texture.h"
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
9
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
10
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
11
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
12
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
13
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
14
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
15
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
16 Mouse *pMouse;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
17 AsyncMouse *pAsyncMouse;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
18
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
19
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
20
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
21
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
22
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
23 //----- (00469860) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
24 void Mouse::GetClickPos(unsigned int *pX, unsigned int *pY)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
25 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
26 unsigned int v3; // eax@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
27
2
2ca04ccb612a NoCD, main menu, various
Nomad
parents: 0
diff changeset
28 if (pAsyncMouse)
0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
29 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
30 *pX = *((int *)pAsyncMouse + 6);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
31 v3 = *((int *)pAsyncMouse + 7);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
32 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
33 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
34 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
35 *pX = this->uMouseClickX;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
36 v3 = this->uMouseClickY;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
37 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
38 *pY = v3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
39 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
40
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
41 //----- (004698A6) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
42 void Mouse::RemoveHoldingItem()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
43 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
44 pParty->pPickedItem.Reset();
2
2ca04ccb612a NoCD, main menu, various
Nomad
parents: 0
diff changeset
45 if (strcmpi(pCurrentCursorName, "MICON2"))
0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
46 SetCursorBitmap("MICON1");
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
47 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
48
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
49 //----- (004698D8) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
50 void Mouse::SetCursorBitmapFromItemID(unsigned int uItemID)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
51 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
52 pMouse->SetCursorBitmap(pItemsTable->pItems[uItemID].pIconName);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
53 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
54
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
55 //----- (004698F6) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
56 void Mouse::SetCurrentCursorBitmap()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
57 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
58 SetCursorBitmap(pCurrentCursorName);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
59 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
60
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
61 //----- (00469903) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
62 void Mouse::SetCursorBitmap(const char *pName)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
63 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
64 Mouse *v2; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
65 HCURSOR v3; // eax@10
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
66 int v4; // ecx@10
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
67 double v5; // st7@11
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
68 float v6; // ST04_4@12
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
69 LONG v7; // eax@14
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
70 LONG v8; // eax@17
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
71 unsigned int v9; // eax@21
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
72 float v10; // [sp+4h] [bp-18h]@11
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
73 struct tagPOINT Point; // [sp+14h] [bp-8h]@20
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
74
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
75 v2 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
76 if ( !this->bInitialized || !pName )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
77 return;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
78 if ( _strcmpi("MICON2", pName) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
79 pGame->uFlags2 &= 0xFFFFFFEFu;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
80 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
81 pGame->uFlags2 |= 0x10u;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
82 if ( _strcmpi(v2->pCurrentCursorName, pName) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
83 strcpy(v2->pCurrentCursorName, pName);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
84 ClearCursor();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
85 if ( _strnicmp(pName, "MICON1", 5u) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
86 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
87 v9 = pIcons_LOD->LoadTexture(pName, TEXTURE_16BIT_PALETTE);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
88 v2->uCursorTextureID = v9;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
89 v2->uCursorTextureID_2 = v9;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
90 v2->AllocCursorSystemMem();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
91 v2->field_C = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
92 v2->field_14 = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
93 v2->bActive = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
94 if ( !areWeLoadingTexture )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
95 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
96 if (uCursorTextureID != -1)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
97 pIcons_LOD->pTextures[uCursorTextureID].Release();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
98 pIcons_LOD->_40F9C5();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
99 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
100 return;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
101 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
102 v2->bActive = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
103 v2->field_C = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
104 if ( !strcmp(pName, "MICON1") )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
105 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
106 v3 = LoadCursorA(GetModuleHandleW(nullptr), "Arrow");
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
107 SetClassLongA(hWnd, GCL_HCURSOR, (LONG)v3);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
108 v4 = (int)pAsyncMouse;
2
2ca04ccb612a NoCD, main menu, various
Nomad
parents: 0
diff changeset
109 if (pAsyncMouse)
0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
110 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
111 v10 = 0.0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
112 v5 = 0.0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
113 LABEL_12:
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
114 v6 = v5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
115 pAsyncMouse->SetHotspot(v6, v10);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
116 goto LABEL_18;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
117 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
118 goto LABEL_20;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
119 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
120 if ( !strcmp(pName, "MICON2") )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
121 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
122 v7 = (LONG)LoadCursorA(GetModuleHandleW(nullptr), "Target");
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
123 SetClassLongA(hWnd, -12, v7);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
124 v4 = (int)pAsyncMouse;
2
2ca04ccb612a NoCD, main menu, various
Nomad
parents: 0
diff changeset
125 if (pAsyncMouse)
0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
126 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
127 v10 = 14.0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
128 v5 = 14.0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
129 goto LABEL_12;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
130 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
131 LABEL_20:
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
132 GetCursorPos(&Point);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
133 SetCursorPos(Point.x, Point.y);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
134 return;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
135 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
136 if ( !strcmp(pName, "MICON3") )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
137 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
138 v8 = (LONG)LoadCursorA(0, (LPCSTR)IDC_WAIT);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
139 SetClassLongA(hWnd, -12, v8);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
140 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
141 LABEL_18:
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
142 if ( !pAsyncMouse || (pAsyncMouse->LoadCursor(pName), !pAsyncMouse) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
143 goto LABEL_20;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
144 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
145 // 506128: using guessed type int areWeLoadingTexture;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
146
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
147 //----- (00469AE4) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
148 LONG Mouse::_469AE4()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
149 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
150 Mouse *v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
151 LONG v2; // ecx@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
152 LONG result; // eax@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
153 struct tagPOINT Point; // [sp+Ch] [bp-8h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
154
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
155 v1 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
156 this->field_8 = 1;
2
2ca04ccb612a NoCD, main menu, various
Nomad
parents: 0
diff changeset
157 if (pAsyncMouse)
0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
158 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
159 v2 = *((int *)pAsyncMouse + 6);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
160 Point.x = *((int *)pAsyncMouse + 6);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
161 result = *((int *)pAsyncMouse + 7);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
162 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
163 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
164 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
165 GetCursorPos(&Point);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
166 if ( pRenderer->bWindowMode )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
167 ScreenToClient(hWnd, &Point);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
168 result = Point.y;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
169 v2 = Point.x;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
170 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
171 v1->uMouseClickX = v2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
172 v1->uMouseClickY = result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
173 if ( pRenderer->bWindowMode )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
174 goto LABEL_16;
2
2ca04ccb612a NoCD, main menu, various
Nomad
parents: 0
diff changeset
175 if (pAsyncMouse)
0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
176 goto LABEL_24;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
177 if ( v2 < 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
178 v2 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
179 if ( result < 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
180 result = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
181 if ( v2 > 639 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
182 v2 = 639;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
183 if ( result > 479 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
184 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
185 result = 479;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
186 LABEL_16:
2
2ca04ccb612a NoCD, main menu, various
Nomad
parents: 0
diff changeset
187 if (pAsyncMouse)
0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
188 goto LABEL_24;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
189 if ( pRenderer->bWindowMode && (v2 < 0 || result < 0 || v2 > 639 || result > 479) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
190 goto LABEL_23;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
191 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
192 if ( v1->field_C )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
193 LABEL_23:
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
194 v1->bActive = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
195 LABEL_24:
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
196 v1->field_8 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
197 return result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
198 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
199
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
200 //----- (00469BA3) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
201 void Mouse::ClearCursor()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
202 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
203 Mouse *v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
204 void *v2; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
205 void **v3; // esi@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
206
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
207 v1 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
208 v2 = this->pCursorBitmap_sysmem;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
209 this->bActive = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
210 if ( v2 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
211 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
212 free(v2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
213 v1->pCursorBitmap_sysmem = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
214 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
215 if ( v1->pCursorBitmap2_sysmem )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
216 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
217 free(v1->pCursorBitmap2_sysmem);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
218 v1->pCursorBitmap2_sysmem = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
219 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
220 v3 = &v1->ptr_90;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
221 if ( *v3 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
222 free(*v3);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
223 *v3 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
224 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
225
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
226 //----- (00469BE6) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
227 void Mouse::AllocCursorSystemMem()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
228 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
229 bActive = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
230 if (!pCursorBitmap_sysmem)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
231 pCursorBitmap_sysmem = (unsigned __int16 *)DoAllocCursorMem();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
232 if (!pCursorBitmap2_sysmem)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
233 pCursorBitmap2_sysmem = (unsigned __int8 *)DoAllocCursorMem();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
234 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
235
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
236 //----- (00469C0D) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
237 void *Mouse::DoAllocCursorMem()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
238 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
239 return malloc(4 * (this->uCursorTextureID != -1 ? pIcons_LOD->pTextures[this->uCursorTextureID].uTextureWidth : 24)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
240 * (this->uCursorTextureID != -1 ? pIcons_LOD->pTextures[this->uCursorTextureID].uTextureHeight : 26));
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
241 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
242
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
243 //----- (00469C39) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
244 POINT *Mouse::GetCursorPos(POINT *a2)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
245 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
246 void *v2; // edx@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
247 POINT *result; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
248 unsigned int v4; // ecx@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
249 unsigned int v5; // edx@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
250
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
251 v2 = pAsyncMouse;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
252 result = a2;
2
2ca04ccb612a NoCD, main menu, various
Nomad
parents: 0
diff changeset
253 if (pAsyncMouse)
0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
254 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
255 a2->x = *((int *)pAsyncMouse + 6);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
256 v4 = *((int *)v2 + 7);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
257 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
258 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
259 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
260 v5 = this->uMouseClickX;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
261 v4 = this->uMouseClickY;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
262 a2->x = v5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
263 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
264 a2->y = v4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
265 return result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
266 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
267
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
268 //----- (00469C65) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
269 void Mouse::Initialize(HWND hWnd)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
270 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
271 this->hWnd = hWnd;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
272 this->bActive = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
273 this->bInitialized = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
274 this->pCursorBitmapPos.x = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
275 this->pCursorBitmapPos.y = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
276 this->uMouseClickX = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
277 this->uMouseClickY = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
278 this->pCursorBitmap_sysmem = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
279 this->field_34 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
280 this->pCursorBitmap2_sysmem = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
281
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
282 SetCursorBitmap("MICON3");
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
283 SetCursorBitmap("MICON2");
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
284 SetCursorBitmap("MICON1");
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
285 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
286
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
287 //----- (00469CC2) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
288 void Mouse::Deactivate()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
289 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
290 if (bInitialized)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
291 bActive = false;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
292 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
293
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
294 //----- (00469CCD) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
295 void Mouse::DrawCursor()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
296 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
297 Mouse *v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
298 char v11; // zf@6
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
299 signed int v3; // eax@6
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
300 signed int v4; // ecx@6
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
301 Vec4_int_ *v5; // edx@21
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
302 int v6; // edi@21
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
303 int v7; // ebx@21
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
304 int v8; // eax@29
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
305 unsigned int v9; // eax@31
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
306
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
307 v1 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
308 if ( this->bInitialized )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
309 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
310 if ( !this->field_8 && this->bActive && !this->field_C )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
311 pMouse->_469AE4();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
312 v11 = v1->field_C == 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
313 v3 = v1->uMouseClickX;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
314 v4 = v1->uMouseClickY;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
315 v1->field_F4 = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
316 if ( !v11 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
317 goto LABEL_12;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
318 if ( pRenderer->bWindowMode )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
319 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
320 if ( v3 < 0 || v4 < 0 || v3 > 639 || v4 > 479 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
321 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
322 LABEL_12:
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
323 v1->field_F4 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
324 return;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
325 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
326 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
327 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
328 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
329 if ( v3 < 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
330 v3 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
331 if ( v4 < 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
332 v4 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
333 if ( v3 > 639 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
334 v3 = 639;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
335 if ( v4 > 479 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
336 v4 = 479;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
337 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
338 v5 = &v1->pCursorBitmapRect;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
339 v6 = v3 + v1->uCursorBitmapPitch;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
340 v7 = v4 + v1->field_5C[0];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
341 v1->pCursorBitmapRect.y = v4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
342 v1->pCursorBitmapRect.x = v3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
343 v1->pCursorBitmapRect.z = v6;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
344 v1->pCursorBitmapRect.w = v7;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
345 if ( v3 < 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
346 v5->x = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
347 if ( v4 < 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
348 v1->pCursorBitmapRect.y = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
349 if ( v6 > 640 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
350 v1->pCursorBitmapRect.z = 640;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
351 if ( v7 > 480 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
352 v1->pCursorBitmapRect.w = 480;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
353 v8 = v1->pCursorBitmapRect.z;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
354 v1->bActive = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
355 v1->uCursorBitmapWidth = v8 - v5->x;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
356 v11 = v1->field_14 == 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
357 v1->uCursorBitmapHeight = v1->pCursorBitmapRect.w - v1->pCursorBitmapRect.y;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
358 if ( !v11 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
359 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
360 if ( pMouse->ptr_90 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
361 v9 = 2 * pMouse->uCursorBitmapPitch;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
362 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
363 v9 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
364 pRenderer->_4A6DF5(
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
365 v1->pCursorBitmap_sysmem,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
366 v9,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
367 &v1->pCursorBitmapPos,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
368 pRenderer->pTargetSurface,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
369 pRenderer->uTargetSurfacePitch,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
370 &v1->pCursorBitmapRect);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
371 v1->field_14 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
372 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
373 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
374 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
375
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
376 //----- (00469E1C) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
377 void Mouse::_469E1C()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
378 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
379 bActive = true;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
380 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
381
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
382 //----- (00469E24) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
383 void Mouse::_469E24()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
384 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
385 if (pCursorBitmap3_sysmembits_16bit)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
386 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
387 free(pCursorBitmap3_sysmembits_16bit);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
388 pCursorBitmap3_sysmembits_16bit = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
389 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
390 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
391
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
392 //----- (00469E3B) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
393 unsigned __int16 *Mouse::_469E3B()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
394 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
395 unsigned __int16 *result; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
396 int v2; // esi@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
397 unsigned int v3; // edx@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
398 int v4; // edi@4
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
399 unsigned __int16 *v5; // ebx@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
400 unsigned __int16 *v6; // esi@6
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
401 unsigned int v7; // [sp+4h] [bp-Ch]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
402 unsigned __int16 *v8; // [sp+8h] [bp-8h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
403 unsigned __int16 *v9; // [sp+Ch] [bp-4h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
404
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
405 result = this->pCursorBitmap3_sysmembits_16bit;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
406 if ( result )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
407 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
408 v9 = this->pCursorBitmap3_sysmembits_16bit;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
409 v7 = pRenderer->uTargetSurfacePitch;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
410 v8 = pRenderer->pTargetSurface;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
411 result = (unsigned __int16 *)this->field_44;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
412 if ( (signed int)result < this->field_4C )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
413 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
414 v2 = this->field_48;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
415 v3 = pRenderer->uTargetSurfacePitch * (int)result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
416 do
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
417 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
418 v4 = this->field_40;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
419 if ( v4 < v2 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
420 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
421 v5 = &v8[v3 + v4];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
422 do
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
423 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
424 v6 = v9;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
425 ++v9;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
426 ++v4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
427 *v5 = *v6;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
428 v2 = this->field_48;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
429 ++v5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
430 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
431 while ( v4 < v2 );
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
432 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
433 v3 += v7;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
434 result = (unsigned __int16 *)((char *)result + 1);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
435 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
436 while ( (signed int)result < this->field_4C );
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
437 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
438 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
439 return result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
440 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
441
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
442 //----- (00469EA4) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
443 void Mouse::_469EA4()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
444 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
445 Mouse *v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
446 unsigned int v2; // eax@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
447 Texture *v3; // edi@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
448 unsigned int v4; // ecx@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
449 unsigned int v5; // eax@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
450 unsigned int v6; // ebx@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
451 int v7; // ecx@15
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
452 int v8; // ecx@25
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
453 int v9; // ebx@26
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
454 unsigned int v10; // eax@26
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
455 int v11; // edx@27
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
456 unsigned __int16 *v12; // edx@29
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
457 unsigned __int16 *v13; // ebx@29
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
458 unsigned int a2; // [sp+Ch] [bp-1Ch]@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
459 unsigned int v15; // [sp+10h] [bp-18h]@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
460 unsigned int v16; // [sp+14h] [bp-14h]@25
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
461 unsigned __int16 *v17; // [sp+18h] [bp-10h]@25
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
462 int v18; // [sp+1Ch] [bp-Ch]@27
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
463 int v19; // [sp+20h] [bp-8h]@15
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
464 unsigned __int16 *v20; // [sp+20h] [bp-8h]@28
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
465 int v21; // [sp+24h] [bp-4h]@12
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
466 unsigned __int16 *v22; // [sp+24h] [bp-4h]@25
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
467
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
468 v1 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
469 if ( pParty->pPickedItem.uItemID )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
470 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
471 v2 = pIcons_LOD->LoadTexture(
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
472 pItemsTable->pItems[pParty->pPickedItem.uItemID].pIconName,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
473 TEXTURE_16BIT_PALETTE);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
474 v3 = (Texture *)(v2 != -1 ? (int)&pIcons_LOD->pTextures[v2] : 0);
2
2ca04ccb612a NoCD, main menu, various
Nomad
parents: 0
diff changeset
475 if (pAsyncMouse)
0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
476 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
477 v4 = *((int *)pAsyncMouse + 6);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
478 v5 = *((int *)pAsyncMouse + 7);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
479 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
480 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
481 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
482 v4 = pMouse->uMouseClickX;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
483 v5 = pMouse->uMouseClickY;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
484 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
485 v6 = v5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
486 a2 = v4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
487 v15 = v5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
488 if ( (signed int)v4 <= 639 && (signed int)v5 <= 479 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
489 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
490 if ( (v4 & 0x80000000u) != 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
491 a2 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
492 if ( (v5 & 0x80000000u) != 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
493 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
494 v6 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
495 v15 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
496 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
497 if ( (signed int)(v3->uTextureWidth + a2) <= 640 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
498 v21 = v3->uTextureWidth;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
499 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
500 v21 = 640 - a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
501 if ( (signed int)(v3->uTextureHeight + v6) <= 480 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
502 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
503 v19 = v3->uTextureHeight;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
504 v7 = v3->uTextureHeight;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
505 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
506 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
507 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
508 v7 = 480 - v6;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
509 v19 = 480 - v6;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
510 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
511 if ( !v1->pCursorBitmap3_sysmembits_16bit
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
512 || a2 != v1->field_40
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
513 || v6 != v1->field_44
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
514 || a2 + v21 != v1->field_48
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
515 || v6 + v7 != v1->field_4C )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
516 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
517 if ( v1->pCursorBitmap3_sysmembits_16bit )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
518 free(v1->pCursorBitmap3_sysmembits_16bit);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
519 v1->pCursorBitmap3_sysmembits_16bit = (unsigned __int16 *)operator new(2 * v3->uTextureHeight
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
520 * v3->uTextureWidth);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
521 v1->field_40 = a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
522 v1->field_48 = a2 + v21;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
523 v1->field_44 = v6;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
524 v1->field_4C = v6 + v19;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
525 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
526 v8 = v1->field_44;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
527 v22 = v1->pCursorBitmap3_sysmembits_16bit;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
528 v17 = pRenderer->pTargetSurface;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
529 v16 = pRenderer->uTargetSurfacePitch;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
530 if ( v8 < v1->field_4C )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
531 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
532 v9 = v1->field_48;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
533 v10 = pRenderer->uTargetSurfacePitch * v8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
534 do
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
535 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
536 v11 = v1->field_40;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
537 v18 = v1->field_40;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
538 if ( v11 < v9 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
539 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
540 v20 = &v17[v10 + v11];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
541 do
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
542 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
543 v12 = v20;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
544 v13 = v22;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
545 ++v18;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
546 ++v20;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
547 ++v22;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
548 *v13 = *v12;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
549 v9 = v1->field_48;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
550 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
551 while ( v18 < v9 );
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
552 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
553 v10 += v16;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
554 ++v8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
555 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
556 while ( v8 < v1->field_4C );
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
557 v6 = v15;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
558 }
23
509744251c8e Player-related members
Nomad
parents: 2
diff changeset
559 if ( pParty->pPickedItem.uAttributes & 2 )
0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
560 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
561 pRenderer->_4A6776(a2, v6, v3);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
562 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
563 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
564 {
23
509744251c8e Player-related members
Nomad
parents: 2
diff changeset
565 if ( pParty->pPickedItem.uAttributes & 1 )
0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
566 pRenderer->DrawTextureTransparent(a2, v6, v3);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
567 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
568 pRenderer->DrawTransparentGreenShade(a2, v6, v3);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
569 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
570 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
571 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
572 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
573 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
574 if ( this->pCursorBitmap3_sysmembits_16bit )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
575 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
576 free(this->pCursorBitmap3_sysmembits_16bit);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
577 v1->pCursorBitmap3_sysmembits_16bit = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
578 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
579 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
580 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
581
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
582 //----- (0046A080) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
583 void Mouse::Activate(int bActive)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
584 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
585 bActive = bActive;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
586 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
587
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
588 //----- (0046A08A) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
589 void Mouse::SetMouseClick(int x, int y)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
590 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
591 uMouseClickX = x;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
592 uMouseClickY = y;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
593 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
594
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
595
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
596 //----- (00409E3D) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
597 void AsyncMouse::_409E3D(char a2)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
598 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
599 if ( *((unsigned char *)this + 128) & 1 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
600 *((unsigned char *)this + 103) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
601 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
602 *((unsigned char *)this + 103) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
603 if ( a2 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
604 *((unsigned int *)this + 32) |= 1u;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
605 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
606 *((unsigned int *)this + 32) &= 0xFFFFFFFEu;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
607 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
608
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
609 //----- (00465C2C) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
610 void AsyncMouse::Release()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
611 {
2
2ca04ccb612a NoCD, main menu, various
Nomad
parents: 0
diff changeset
612 if (pAsyncMouse)
0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
613 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
614 pAsyncMouse->Suspend();
2
2ca04ccb612a NoCD, main menu, various
Nomad
parents: 0
diff changeset
615 if (pAsyncMouse)
0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
616 (**(void (__stdcall ***)(int))pAsyncMouse)(1);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
617 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
618 pAsyncMouse = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
619 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
620
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
621
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
622
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
623
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
624 //----- (0046ACA9) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
625 AsyncMouse::AsyncMouse(IDirectDrawSurface *a2)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
626 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
627 IDirectDrawSurface *v2; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
628 void *v3; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
629 char *v4; // edi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
630 double v5; // ST14_8@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
631 double v6; // ST14_8@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
632
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
633 v2 = a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
634 v3 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
635 *((int *)this + 16) = -1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
636 *((int *)this + 3) = (int)v2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
637 LOBYTE(v2) = BYTE3(a2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
638 v4 = (char *)this + 104;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
639 *((int *)this + 1) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
640 *((char *)this + 20) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
641 *((int *)this + 17) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
642 *((int *)this + 18) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
643 *((char *)this + 88) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
644 *((char *)this + 91) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
645 *((char *)this + 93) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
646 *((char *)this + 94) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
647 *((char *)this + 95) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
648 *((char *)this + 96) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
649 *((char *)this + 97) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
650 *((char *)this + 98) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
651 *((char *)this + 99) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
652 *((char *)this + 100) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
653 *((char *)this + 101) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
654 *((char *)this + 102) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
655 *((char *)this + 104) = (char)v2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
656 *((int *)this + 27) = (int)AsyncMouse::unk_46BD09(0, 0);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
657 *((int *)v4 + 2) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
658 *((char *)v3 + 116) = BYTE3(a2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
659 *((int *)v3 + 30) = (int)AsyncMouse::unk_46BD09(0, 0);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
660 *((int *)v3 + 31) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
661 *((int *)v3 + 32) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
662 *((int *)v3 + 33) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
663 *(int *)v3 = 5080880;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
664 if ( !Initialize(this) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
665 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
666 MessageBoxW(nullptr, L"Could not initialize CMouseAsync object", nullptr, 0);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
667 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
668 *((int *)v3 + 12) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
669 *((int *)v3 + 13) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
670 *((int *)v3 + 14) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
671 *((int *)v3 + 15) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
672 v5 = (float)0.0 + 6.7553994e15;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
673 *((int *)v3 + 10) = LODWORD(v5);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
674 v6 = (float)0.0 + 6.7553994e15;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
675 a2 = (IDirectDrawSurface *)LODWORD(v6);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
676 *((int *)v3 + 32) |= 1u;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
677 *((int *)v3 + 11) = LODWORD(v6);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
678 *((char *)v3 + 103) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
679 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
680 // 4DBD94: using guessed type int dword_4DBD94;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
681
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
682
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
683
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
684 //----- (0046ADE2) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
685 AsyncMouse::~AsyncMouse()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
686 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
687 void *v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
688 char *v2; // edi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
689 int v3; // ecx@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
690
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
691 v1 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
692 //*(int *)this = AsyncMouse_pvdtor;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
693 v2 = (char *)this + 132;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
694 v3 = *((int *)this + 33);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
695 if ( v3 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
696 (**(void (__stdcall ***)(int))v3)(1);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
697 *(int *)v2 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
698 TerminateThread(*((HANDLE *)v1 + 4), 0xFAu);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
699 SetWindowPos(hWnd, (HWND)0xFFFFFFFE, uWindowX, uWindowY, 640, 480, 0);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
700 //AsyncMouse::dtor_sub_46BC73((int)((char *)v1 + 116));
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
701 //AsyncMouse::dtor_sub_46BC73((int)((char *)v1 + 104));
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
702 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
703 // 4D8730: using guessed type int (__stdcall *AsyncMouse_pvdtor[2])(char);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
704
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
705
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
706
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
707
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
708
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
709
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
710
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
711
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
712
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
713
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
714
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
715
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
716
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
717 //----- (0046AE6E) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
718 char AsyncMouse::Initialize(LPVOID lpParameter)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
719 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
720 void *v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
721 char result; // al@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
722
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
723 v1 = lpParameter;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
724 if ( LoadCursorImage() && _46B072() )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
725 result = CreateDisrectInputMouse() != 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
726 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
727 result = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
728 return result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
729 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
730
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
731 //----- (0046AE97) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
732 char AsyncMouse::LoadCursor(const char *pContainer)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
733 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
734 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
735 return 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
736 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
737 void *v2; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
738 int v3; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
739 HRESULT v4; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
740 char result; // al@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
741 HRESULT a2; // [sp+8h] [bp-B0h]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
742 int v7; // [sp+58h] [bp-60h]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
743 char v9; // [sp+B4h] [bp-4h]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
744
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
745 v2 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
746 EnterCriticalSection(&pGame->pThreadWardInstance->cs2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
747 v3 = *((int *)v2 + 1);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
748 a2 = 100;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
749 v7 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
750 v4 = (*(int (__stdcall **)(int, int, int, int, signed int, HRESULT *))(*(int *)v3 + 20))(
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
751 v3,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
752 0,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
753 0,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
754 0,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
755 1024,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
756 &a2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
757 ErrHR(v4, "DirectInput", __FUNCTION__, __FILE__, __LINE__);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
758
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
759 Texture thisa; // [sp+6Ch] [bp-4Ch]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
760 //Texture::Texture(&thisa);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
761
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
762 if ( pIcons_LOD->LoadTextureFromLOD(&thisa, pContainer, TEXTURE_16BIT_PALETTE) != -1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
763 && DrawCursor(&thisa, *((IDirectDrawSurface4 **)v2 + 1), 0) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
764 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
765 thisa.Release();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
766 LeaveCriticalSection(&pGame->pThreadWardInstance->cs2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
767 result = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
768 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
769 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
770 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
771 result = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
772 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
773 return result;*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
774 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
775
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
776 //----- (0046AF50) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
777 char AsyncMouse::LoadCursorImage()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
778 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
779 void *v1; // ebx@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
780 int v2; // eax@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
781 int v3; // esi@4
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
782 char result; // al@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
783 const char *v5; // eax@6
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
784 std::string v6; // [sp-18h] [bp-12Ch]@9
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
785 const char *v7; // [sp-8h] [bp-11Ch]@9
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
786 int v8; // [sp-4h] [bp-118h]@9
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
787 DDSURFACEDESC2 Dst; // [sp+Ch] [bp-108h]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
788 int v10; // [sp+88h] [bp-8Ch]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
789 int v11; // [sp+8Ch] [bp-88h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
790 int v12; // [sp+90h] [bp-84h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
791 int v13; // [sp+94h] [bp-80h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
792 char v14; // [sp+D0h] [bp-44h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
793 int v15; // [sp+F0h] [bp-24h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
794 int v16; // [sp+104h] [bp-10h]@4
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
795 int v17; // [sp+108h] [bp-Ch]@4
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
796 std::string *v18; // [sp+10Ch] [bp-8h]@9
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
797 int a3; // [sp+113h] [bp-1h]@9
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
798
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
799 v1 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
800 memset(&Dst, 0, 0x7Cu);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
801 Dst.dwSize = 124;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
802 if ( pRenderer->pDirectDraw4->GetDisplayMode(&Dst)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
803 || (memset(&v10, 0, 0x7Cu),
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
804 v10 = 124,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
805 v11 = 4103,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
806 v15 = 2112,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
807 v12 = 32,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
808 v13 = 32,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
809 v2 = *((int *)v1 + 3),
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
810 memcpy(&v14, &Dst.ddpfPixelFormat, 0x20u),
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
811 (*(int (__stdcall **)(int, int *, char *, int))(**(int **)v2 + 24))(
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
812 *(int *)v2,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
813 &v10,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
814 (char *)v1 + 4,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
815 0))
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
816 || (*(int (__stdcall **)(int, int *, char *, int))(***((int ***)v1 + 3) + 24))(
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
817 **((int **)v1 + 3),
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
818 &v10,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
819 (char *)v1 + 8,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
820 0)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
821 || (v3 = *((int *)v1 + 1),
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
822 v16 = 0,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
823 v17 = 0,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
824 (*(int (__stdcall **)(int, signed int, int *))(*(int *)v3 + 116))(v3, 8, &v16)) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
825 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
826 result = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
827 return false;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
828 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
829 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
830 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
831 v5 = std__string_720990.c_str();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
832 if ( !std__string_720990.size() )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
833 v5 = (const char *)&dword_4D86F0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
834 if ( !LoadCursor(v5) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
835 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
836 MessageBoxW(nullptr, L"Could not load async mouse cursor image", L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\MouseAsync.cpp:182", 0);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
837 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
838 result = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
839 return true;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
840 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
841 return result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
842 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
843 // 4D86F0: using guessed type int dword_4D86F0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
844
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
845 //----- (0046B072) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
846 char AsyncMouse::_46B072()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
847 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
848 DWORD v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
849 HANDLE v2; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
850 char result; // al@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
851 DWORD ThreadId; // [sp+0h] [bp-4h]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
852
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
853 ThreadId = (DWORD)this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
854 v1 = (DWORD)this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
855 v2 = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)AsyncMouseThread, this, 4u, &ThreadId);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
856 *(int *)(v1 + 16) = (int)v2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
857 if ( v2 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
858 result = SetThreadPriority(v2, 15) != 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
859 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
860 result = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
861 return result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
862 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
863
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
864 //----- (0046B0A9) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
865 char AsyncMouse::CreateDisrectInputMouse()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
866 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
867 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
868 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
869 void *v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
870 DirectInputMouse *v2; // ecx@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
871 DirectInputMouse *v3; // eax@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
872
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
873 v1 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
874 v2 = (DirectInputMouse *)operator new(0x2Cu);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
875 if ( v2 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
876 v3 = DirectInputMouse::DirectInputMouse(v2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
877 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
878 v3 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
879 *((int *)v1 + 33) = v3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
880 return v3 != 0;*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
881 return 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
882 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
883
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
884 //----- (0046B0ED) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
885 int AsyncMouse::_46B0ED()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
886 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
887 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
888 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
889 int v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
890 int v2; // ecx@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
891 int result; // eax@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
892
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
893 v1 = this + 132;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
894 v2 = *(int *)(this + 132);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
895 if ( v2 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
896 result = (**(int (__stdcall ***)(int))v2)(1);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
897 *(int *)v1 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
898 return result;*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
899 return 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
900 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
901 // 46B0ED: using guessed type int __thiscall AsyncMouse__46B0ED(int);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
902
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
903 //----- (0046B105) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
904 void AsyncMouse::Resume()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
905 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
906 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
907 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
908 void *v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
909
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
910 v1 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
911 EnterCriticalSection(&pGame->pThreadWardInstance->cs3);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
912 AsyncMouse::CreateDisrectInputMouse(v1);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
913 AsyncMouse::Clip();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
914 ResumeThread(*((HANDLE *)v1 + 4));
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
915 *((char *)v1 + 88) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
916 LeaveCriticalSection(&pGame->pThreadWardInstance->cs3);*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
917 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
918
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
919 //----- (0046B14F) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
920 void AsyncMouse::Suspend()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
921 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
922 void *v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
923 Vis *v2; // eax@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
924 std::string v3; // [sp-18h] [bp-24h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
925 const char *v4; // [sp-8h] [bp-14h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
926 int v5; // [sp-4h] [bp-10h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
927 std::string *v6; // [sp+4h] [bp-8h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
928 int a3; // [sp+Bh] [bp-1h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
929
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
930 v1 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
931 if ( *((int *)this + 33) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
932 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
933 v2 = pGame->pVisInstance;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
934 if ( v2 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
935 v2->stru1.uNumPointers = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
936 EnterCriticalSection(&pGame->pThreadWardInstance->cs3);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
937 SuspendThread(*((HANDLE *)v1 + 4));
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
938 _46B0ED();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
939 LeaveCriticalSection(&pGame->pThreadWardInstance->cs3);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
940 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
941 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
942 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
943 MessageBoxW(nullptr, L"DI_Mouse pointer invalid; bailing out from suspend()", L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\MouseAsync.cpp:233", 0);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
944 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
945 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
946 // 46B0ED: using guessed type int __thiscall AsyncMouse__46B0ED(int);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
947
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
948 //----- (0046B1DD) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
949 char AsyncMouse::_46B1DD()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
950 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
951 *((char *)this + 20) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
952 Sleep(118);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
953 return 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
954 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
955
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
956 //----- (0046B1EC) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
957 bool AsyncMouse::DrawCursor(Texture *a1, IDirectDrawSurface4 *a2, int a3)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
958 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
959 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
960 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
961 bool result; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
962 unsigned __int16 *v5; // ebx@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
963 unsigned __int8 *v6; // edx@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
964 int v7; // esi@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
965 int v8; // ecx@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
966 LPVOID v9; // edi@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
967 int v10; // ecx@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
968 DDSURFACEDESC2 Dst; // [sp+0h] [bp-84h]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
969 __int32 v12; // [sp+7Ch] [bp-8h]@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
970 int v13; // [sp+80h] [bp-4h]@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
971
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
972 Dst.dwSize = 124;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
973 result = pRenderer->LockSurface_DDraw4(a2, &Dst, 1u);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
974 if ( result )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
975 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
976 v5 = a1->pPalette16;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
977 v6 = a1->pLevelOfDetail0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
978 v7 = a1->uTextureWidth;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
979 v8 = a1->uTextureHeight;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
980 v9 = Dst.lpSurface;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
981 if ( v8 > 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
982 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
983 v12 = 2 * (Dst.lPitch / 2 - v7);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
984 v13 = v8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
985 do
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
986 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
987 if ( v7 > 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
988 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
989 v10 = v7;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
990 do
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
991 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
992 if ( v5[*v6] )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
993 *(short *)v9 = v5[*v6];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
994 v9 = (char *)v9 + 2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
995 ++v6;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
996 --v10;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
997 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
998 while ( v10 );
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
999 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1000 v9 = (char *)v9 + v12;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1001 --v13;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1002 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1003 while ( v13 );
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1004 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1005 result = a2->Unlock(
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1006 v6,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1007 a2,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1008 a3);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1009 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1010 LOBYTE(result) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1011 return result;*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1012 return 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1013 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1014
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1015 //----- (0046B289) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1016 bool AsyncMouse::_46B289(int a2, char a3)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1017 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1018 char v3; // dl@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1019 bool result; // eax@33
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1020 char v5; // [sp+2h] [bp-2h]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1021 char v6; // [sp+3h] [bp-1h]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1022
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1023 v3 = *((char *)this + 93);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1024 v6 = *((char *)this + 94);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1025 v5 = *((char *)this + 95);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1026 if ( a3 & 1 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1027 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1028 *((char *)this + 93) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1029 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1030 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1031 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1032 if ( v3 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1033 *((char *)this + 99) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1034 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1035 *((char *)this + 99) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1036 *((char *)this + 93) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1037 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1038 if ( a3 & 2 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1039 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1040 *((char *)this + 94) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1041 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1042 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1043 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1044 if ( v6 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1045 *((char *)this + 100) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1046 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1047 *((char *)this + 100) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1048 *((char *)this + 94) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1049 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1050 if ( a3 & 4 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1051 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1052 *((char *)this + 95) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1053 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1054 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1055 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1056 if ( v5 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1057 *((char *)this + 101) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1058 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1059 *((char *)this + 101) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1060 *((char *)this + 95) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1061 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1062 *((char *)this + 96) = v3 != *((char *)this + 93);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1063 *((char *)this + 97) = v6 != *((char *)this + 94);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1064 *((char *)this + 98) = v5 != *((char *)this + 95);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1065 if ( *((char *)this + 99) && *((char *)this + 96) || *((char *)this + 100) && *((char *)this + 97) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1066 *((char *)this + 102) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1067 LOBYTE(result) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1068 return result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1069 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1070
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1071 //----- (0046B342) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1072 void AsyncMouse::SetHotspot(float hotspotx, float hotspoty)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1073 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1074 double v3; // ST00_8@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1075 double v4; // ST00_8@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1076
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1077 v3 = hotspotx + 6.7553994e15;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1078 *(int *)(this + 40) = LODWORD(v3);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1079 v4 = hotspoty + 6.7553994e15;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1080 *(int *)(this + 44) = LODWORD(v4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1081 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1082
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1083 //----- (0046B37C) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1084 int AsyncMouse::UpdateData(int a2)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1085 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1086 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1087 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1088 void *v2; // edi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1089 int result; // eax@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1090 int v4; // eax@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1091 int v5; // esi@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1092 std::string v6; // [sp-18h] [bp-28h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1093 const char *v7; // [sp-8h] [bp-18h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1094 int v8; // [sp-4h] [bp-14h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1095 std::string *v9; // [sp+8h] [bp-8h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1096 int a3; // [sp+Fh] [bp-1h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1097
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1098 v2 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1099 if ( *((int *)this + 33) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1100 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1101 EnterCriticalSection(&pGame->pThreadWardInstance->cs3);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1102 DirectInputMouse::_43BB89(*((DirectInputMouse **)v2 + 33));
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1103 v4 = *((int *)v2 + 33);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1104 v5 = v4 + 32;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1105 _46B289(v4 + 32, *(int *)(v4 + 40));
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1106 LeaveCriticalSection(&pGame->pThreadWardInstance->cs3);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1107 result = a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1108 *(int *)a2 = *(int *)v5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1109 *(int *)(a2 + 4) = *(int *)(v5 + 4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1110 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1111 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1112 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1113 MessageBoxW(nullptr, L"DI_Mouse pointer invalid bailing out from update_mouse_data()", L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\MouseAsync.cpp:446", 0);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1114 result = a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1115 *(int *)a2 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1116 *(int *)(a2 + 4) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1117 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1118 return result;*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1119 return 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1120 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1121
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1122 //----- (0046B420) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1123 char AsyncMouse::Thread()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1124 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1125 void *v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1126 char result; // al@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1127 int v3; // eax@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1128 int v4; // ecx@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1129 int v5; // eax@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1130 int v6; // ecx@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1131 int v7; // [sp+4h] [bp-8h]@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1132 int v8; // [sp+8h] [bp-4h]@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1133
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1134 v1 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1135 if ( *((char *)this + 20) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1136 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1137 result = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1138 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1139 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1140 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1141 UpdateData((int)&v7);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1142 _46BA8D(v7, v8);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1143 _46B958(v7 - *((int *)v1 + 10), v8 - *((int *)v1 + 11));
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1144 _46B492((int)&v7);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1145 _46B5D5((int)&v7);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1146 v3 = v7;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1147 v4 = v8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1148 *((int *)v1 + 6) = v7;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1149 v5 = v3 - *((int *)v1 + 10);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1150 *((int *)v1 + 7) = v4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1151 v6 = v4 - *((int *)v1 + 11);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1152 *((int *)v1 + 8) = v5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1153 result = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1154 *((int *)v1 + 9) = v6;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1155 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1156 return result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1157 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1158
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1159 //----- (0046B492) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1160 void AsyncMouse::_46B492(int a2)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1161 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1162 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1163 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1164 void *v2; // edi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1165 int v3; // esi@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1166 int v4; // eax@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1167 int v5; // ecx@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1168 int v6; // eax@8
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1169 int v7; // ecx@8
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1170 int v8; // eax@11
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1171 int v9; // esi@11
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1172 int v10; // [sp+Ch] [bp-1Ch]@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1173 int v11; // [sp+10h] [bp-18h]@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1174 int v12; // [sp+14h] [bp-14h]@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1175 int v13; // [sp+18h] [bp-10h]@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1176 int v14; // [sp+24h] [bp-4h]@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1177
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1178 v2 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1179 EnterCriticalSection(&pGame->pThreadWardInstance->csAsyncMouse);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1180 if ( *((int *)v2 + 28) > 0x80u )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1181 _46BCAB((char *)v2 + 104);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1182 v3 = a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1183 if ( *((char *)v2 + 93) && *((char *)v2 + 96) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1184 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1185 v4 = *(int *)a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1186 v5 = *(int *)(a2 + 4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1187 v13 = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1188 v10 = 5080884;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1189 v11 = v4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1190 v12 = v5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1191 v14 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1192 AsyncMouse::unk_46BCD2((char *)v2 + 104, (int)&a2, *((int *)v2 + 27), (int)&v10);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1193 v14 = -1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1194 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1195 if ( *((char *)v2 + 94) && *((char *)v2 + 97) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1196 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1197 v6 = *(int *)v3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1198 v7 = *(int *)(v3 + 4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1199 v13 = 2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1200 v10 = 5080884;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1201 v11 = v6;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1202 v12 = v7;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1203 v14 = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1204 AsyncMouse::unk_46BCD2((char *)v2 + 104, (int)&a2, *((int *)v2 + 27), (int)&v10);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1205 v14 = -1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1206 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1207 if ( *((char *)v2 + 95) && *((char *)v2 + 98) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1208 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1209 v8 = *(int *)v3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1210 v9 = *(int *)(v3 + 4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1211 v13 = 4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1212 v10 = 5080884;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1213 v11 = v8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1214 v12 = v9;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1215 v14 = 2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1216 AsyncMouse::unk_46BCD2((char *)v2 + 104, (int)&a2, *((int *)v2 + 27), (int)&v10);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1217 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1218 LeaveCriticalSection(&pGame->pThreadWardInstance->csAsyncMouse);*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1219 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1220
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1221 //----- (0046B5D5) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1222 void AsyncMouse::_46B5D5(int a2)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1223 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1224 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1225 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1226 void *v2; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1227 DWORD v3; // eax@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1228 char v4; // zf@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1229 int v5; // edi@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1230 int v6; // eax@6
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1231 int v7; // ecx@6
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1232 int v8; // eax@11
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1233 int v9; // ecx@11
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1234 int v10; // eax@16
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1235 int v11; // edi@16
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1236 int (__stdcall **v12)(char); // [sp+Ch] [bp-20h]@6
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1237 int v13; // [sp+10h] [bp-1Ch]@6
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1238 int v14; // [sp+14h] [bp-18h]@6
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1239 int v15; // [sp+18h] [bp-14h]@6
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1240 DWORD v16; // [sp+1Ch] [bp-10h]@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1241 int v17; // [sp+28h] [bp-4h]@6
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1242
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1243 v2 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1244 EnterCriticalSection(&pGame->pThreadWardInstance->csAsyncMouse);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1245 if ( *((int *)v2 + 31) > 0x80u )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1246 _46BCAB((char *)v2 + 116);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1247 v3 = timeGetTime();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1248 v4 = *((char *)v2 + 93) == 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1249 v5 = a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1250 v16 = v3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1251 if ( !v4 && *((char *)v2 + 96) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1252 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1253 if ( v3 - *((int *)v2 + 19) < 0xFA )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1254 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1255 v6 = *(int *)a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1256 v7 = *(int *)(a2 + 4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1257 v15 = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1258 v12 = &AsyncMouse::unk::vdtor_ptr;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1259 v13 = v6;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1260 v14 = v7;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1261 v17 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1262 AsyncMouse::unk_46BCD2((char *)v2 + 116, (int)&a2, *((int *)v2 + 30), (int)&v12);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1263 v17 = -1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1264 v3 = v16;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1265 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1266 *((int *)v2 + 19) = v3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1267 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1268 if ( *((char *)v2 + 94) && *((char *)v2 + 97) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1269 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1270 if ( v3 - *((int *)v2 + 20) < 0xFA )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1271 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1272 v8 = *(int *)v5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1273 v9 = *(int *)(v5 + 4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1274 v15 = 2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1275 //v12 = &AsyncMouse::unk::vdtor_ptr;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1276 v13 = v8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1277 v14 = v9;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1278 v17 = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1279 AsyncMouse::unk_46BCD2((char *)v2 + 116, (int)&a2, *((int *)v2 + 30), (int)&v12);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1280 v17 = -1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1281 v3 = v16;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1282 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1283 *((int *)v2 + 20) = v3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1284 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1285 if ( *((char *)v2 + 95) && *((char *)v2 + 98) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1286 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1287 if ( v3 - *((int *)v2 + 21) < 0xFA )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1288 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1289 v10 = *(int *)v5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1290 v11 = *(int *)(v5 + 4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1291 v15 = 4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1292 //v12 = &AsyncMouse::unk::vdtor_ptr;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1293 v13 = v10;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1294 v14 = v11;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1295 v17 = 2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1296 AsyncMouse::unk_46BCD2((char *)v2 + 116, (int)&a2, *((int *)v2 + 30), (int)&v12);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1297 v3 = v16;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1298 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1299 *((int *)v2 + 21) = v3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1300 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1301 LeaveCriticalSection(&pGame->pThreadWardInstance->csAsyncMouse);*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1302 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1303
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1304 //----- (0046B736) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1305 void AsyncMouse::_46B736_consume_click_lists(char a2)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1306 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1307 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1308 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1309 void *v2; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1310
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1311 v2 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1312 _46B76F();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1313 _46B879();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1314 if ( a2 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1315 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1316 _46BCAB((char *)v2 + 104);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1317 _46BCAB((char *)v2 + 116);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1318 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1319 if ( *((char *)v2 + 102) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1320 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1321 back_to_game();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1322 *((char *)v2 + 102) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1323 }*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1324 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1325
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1326 //----- (0046B76F) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1327 void AsyncMouse::_46B76F()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1328 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1329 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1330 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1331 char *v0; // ebx@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1332 int v1; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1333 int v2; // edi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1334 int v3; // eax@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1335 unsigned int *v4; // esi@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1336 unsigned int v5; // ST08_4@7
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1337 unsigned int v6; // ST04_4@7
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1338 float v7; // ST00_4@7
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1339 unsigned int v8; // ST08_4@9
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1340 unsigned int v9; // ST04_4@9
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1341 float v10; // ST00_4@9
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1342
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1343 EnterCriticalSection(&pGame->pThreadWardInstance->csAsyncMouse);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1344 v0 = (char *)pAsyncMouse + 108;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1345 v1 = *((int *)pAsyncMouse + 27);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1346 v2 = *(int *)v1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1347 if ( *(int *)v1 != v1 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1348 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1349 do
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1350 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1351 v3 = *(int *)(v2 + 20);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1352 v4 = (unsigned int *)(v2 + 12);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1353 if ( v3 & 1 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1354 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1355 pGame->PickMouse(512.0, *v4, *(int *)(v2 + 16), 0, &a3, &a4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1356 if ( GetCurrentMenuID() == 6 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1357 sub_41CD4F(0x29u);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1358 UI_OnMouseLeftClick((int *)(v2 + 12));
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1359 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1360 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1361 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1362 if ( v3 & 2 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1363 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1364 v5 = *(int *)(v2 + 16);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1365 v6 = *v4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1366 v7 = GetPickDepth();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1367 pGame->PickMouse(v7, v6, v5, 0, &stru_F93E30, &a5);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1368 sub_416D62_ShowPopupWindow_MonsterRecord_ItemInfo_etcsub_416D62((Vec2_int_ *)(v2 + 12));
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1369 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1370 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1371 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1372 if ( v3 & 4 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1373 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1374 v8 = *(int *)(v2 + 16);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1375 v9 = *v4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1376 v10 = GetPickDepth();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1377 pGame->PickMouse(v10, v9, v8, 1, &a3, &a5);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1378 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1379 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1380 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1381 v2 = *(int *)v2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1382 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1383 while ( v2 != *(int *)v0 );
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1384 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1385 LeaveCriticalSection(&pGame->pThreadWardInstance->csAsyncMouse);*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1386 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1387
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1388 //----- (0046B879) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1389 void AsyncMouse::_46B879()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1390 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1391 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1392 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1393 char *v0; // ebx@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1394 int v1; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1395 int v2; // edi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1396 int v3; // eax@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1397 unsigned int *v4; // esi@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1398 unsigned int v5; // ST08_4@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1399 unsigned int v6; // ST04_4@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1400 float v7; // ST00_4@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1401
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1402 EnterCriticalSection(&pGame->pThreadWardInstance->csAsyncMouse);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1403 v0 = (char *)pAsyncMouse + 120;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1404 v1 = *((int *)pAsyncMouse + 30);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1405 v2 = *(int *)v1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1406 if ( *(int *)v1 != v1 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1407 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1408 do
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1409 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1410 v3 = *(int *)(v2 + 20);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1411 v4 = (unsigned int *)(v2 + 12);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1412 if ( v3 & 1 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1413 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1414 pGame->PickMouse(512.0, *v4, *(int *)(v2 + 16), 0, &a3, &a4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1415 sub_4178C4();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1416 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1417 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1418 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1419 if ( v3 & 2 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1420 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1421 v5 = *(int *)(v2 + 16);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1422 v6 = *v4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1423 v7 = GetPickDepth();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1424 pGame->PickMouse(v7, v6, v5, 0, &stru_F93E30, &a4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1425 sub_4178E1();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1426 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1427 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1428 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1429 if ( v3 & 4 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1430 nullsub_1();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1431 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1432 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1433 v2 = *(int *)v2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1434 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1435 while ( v2 != *(int *)v0 );
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1436 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1437 LeaveCriticalSection(&pGame->pThreadWardInstance->csAsyncMouse);*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1438 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1439
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1440 //----- (0046B944) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1441 int AsyncMouse::_46B944()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1442 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1443 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1444 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1445 void *v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1446
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1447 v1 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1448 _46BCAB((char *)this + 104);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1449 return _46BCAB((char *)v1 + 116);*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1450 return 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1451 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1452 // 46BCAB: using guessed type int __thiscall AsyncMouse__46BCAB(int);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1453
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1454 //----- (0046B958) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1455 char AsyncMouse::_46B958(int a2, int a3)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1456 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1457 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1458 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1459 void *v3; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1460 char result; // al@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1461 int v5; // edx@6
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1462 int v6; // eax@6
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1463 int v7; // eax@12
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1464 int v8; // edi@13
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1465 int v9; // eax@19
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1466 struct IDirectDrawSurface4 *v10; // ST08_4@21
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1467 DDBLTFX v11; // [sp+4h] [bp-74h]@21
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1468 RECT v12; // [sp+68h] [bp-10h]@19
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1469
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1470 v3 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1471 if ( pRenderer->pFrontBuffer4 && !pRenderer->pFrontBuffer4->IsLost() )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1472 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1473 EnterCriticalSection(&pGame->pThreadWardInstance->cs2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1474 if ( *((char *)v3 + 88) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1475 pRenderer->pFrontBuffer4->BltFast(
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1476 *((int *)v3 + 8),
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1477 *((int *)v3 + 9),
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1478 (LPDIRECTDRAWSURFACE4)*((int *)v3 + 2),
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1479 (LPRECT)((char *)v3 + 48),
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1480 16u);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1481 v5 = 640 - a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1482 v6 = 640 - a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1483 if ( 640 - a2 >= 31 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1484 v6 = 31;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1485 if ( v6 >= 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1486 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1487 if ( v5 >= 31 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1488 v5 = 31;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1489 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1490 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1491 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1492 v5 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1493 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1494 v7 = 480 - a3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1495 if ( 480 - a3 >= 31 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1496 v8 = 31;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1497 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1498 v8 = 480 - a3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1499 if ( v8 >= 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1500 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1501 if ( v7 >= 31 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1502 v7 = 31;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1503 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1504 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1505 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1506 v7 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1507 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1508 *((int *)v3 + 13) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1509 *((int *)v3 + 14) = v5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1510 v12.right = a2 + v5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1511 *((int *)v3 + 12) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1512 *((int *)v3 + 15) = v7;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1513 v12.left = a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1514 v12.bottom = a3 + v7;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1515 v9 = *((int *)v3 + 2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1516 v12.top = a3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1517 (*(void (__stdcall **)(int, int, int, IDirectDrawSurface4 *, RECT *, signed int))(*(int *)v9 + 28))(
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1518 v9,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1519 0,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1520 0,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1521 pRenderer->pFrontBuffer4,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1522 &v12,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1523 16);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1524 if ( !*((char *)v3 + 90) || *((char *)v3 + 128) & 1 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1525 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1526 v10 = (struct IDirectDrawSurface4 *)*((int *)v3 + 1);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1527 v11.dwSize = 100;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1528 v11.dwDDFX = 8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1529 pRenderer->pFrontBuffer4->Blt(
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1530 &v12,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1531 v10,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1532 (LPRECT)((char *)v3 + 48),
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1533 16812032u,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1534 &v11);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1535 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1536 *((char *)v3 + 88) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1537 LeaveCriticalSection(&pGame->pThreadWardInstance->cs2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1538 result = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1539 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1540 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1541 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1542 result = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1543 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1544 return result;*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1545 return 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1546 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1547
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1548 //----- (0046BA8D) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1549 char AsyncMouse::_46BA8D(int a2, int a3)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1550 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1551 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1552 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1553 void *v3; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1554 DWORD v4; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1555
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1556 v3 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1557 v4 = timeGetTime();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1558 if ( v4 - *((int *)v3 + 16) <= 0x32 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1559 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1560 *((char *)v3 + 91) = *((char *)v3 + 90) == 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1561 *((char *)v3 + 90) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1562 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1563 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1564 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1565 if ( *((char *)v3 + 90) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1566 *((char *)v3 + 91) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1567 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1568 *((char *)v3 + 91) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1569 *((char *)v3 + 90) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1570 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1571 if ( a2 != *((int *)v3 + 17) || a3 != *((int *)v3 + 18) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1572 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1573 *((int *)v3 + 16) = v4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1574 *((int *)v3 + 17) = a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1575 *((int *)v3 + 18) = a3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1576 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1577 return *((char *)v3 + 90);*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1578 return 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1579 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1580
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1581 //----- (0046BAEC) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1582 void AsyncMouse::_46BAEC()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1583 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1584 void *v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1585
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1586 v1 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1587 EnterCriticalSection(&pGame->pThreadWardInstance->cs2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1588 *((char *)v1 + 88) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1589 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1590
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1591 //----- (0046BB0A) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1592 void AsyncMouse::_46BB0A()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1593 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1594 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1595 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1596 void *v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1597 int v2; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1598 int v3; // edx@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1599 int v4; // ecx@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1600 int v5; // edx@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1601 int v6; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1602 char v7; // zf@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1603 struct IDirectDrawSurface4 *v8; // ST08_4@8
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1604 int v9; // [sp+8h] [bp-74h]@8
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1605 int v10; // [sp+Ch] [bp-70h]@8
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1606 int v11; // [sp+6Ch] [bp-10h]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1607 int v12; // [sp+70h] [bp-Ch]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1608 int v13; // [sp+74h] [bp-8h]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1609 int v14; // [sp+78h] [bp-4h]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1610
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1611 v1 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1612 v2 = *((int *)this + 17) - *((int *)this + 10);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1613 v3 = *((int *)this + 14);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1614 v4 = *((int *)this + 18) - *((int *)this + 11);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1615 v11 = v2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1616 v5 = v2 + v3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1617 v6 = *((int *)v1 + 15);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1618 v12 = v4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1619 v7 = *((char *)v1 + 90) == 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1620 v13 = v5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1621 v14 = v4 + v6;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1622 if ( v7 || *((char *)v1 + 128) & 1 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1623 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1624 if ( *((char *)v1 + 88) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1625 pRenderer->pFrontBuffer4->BltFast(
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1626 *((int *)v1 + 8),
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1627 *((int *)v1 + 9),
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1628 (LPDIRECTDRAWSURFACE4)*((int *)v1 + 2),
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1629 (LPRECT)((char *)v1 + 48),
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1630 16u);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1631 (*(void (__stdcall **)(int, int, int, IDirectDrawSurface4 *, int *, signed int))(**((int **)v1 + 2) + 28))(
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1632 *((int *)v1 + 2),
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1633 0,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1634 0,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1635 pRenderer->pFrontBuffer4,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1636 &v11,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1637 16);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1638 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1639 if ( *((char *)v1 + 90) && !(*((char *)v1 + 128) & 1) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1640 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1641 v8 = (struct IDirectDrawSurface4 *)*((int *)v1 + 1);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1642 v9 = 100;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1643 v10 = 8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1644 pRenderer->pFrontBuffer4->Blt(
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1645 (LPRECT)&v11,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1646 v8,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1647 (LPRECT)((char *)v1 + 48),
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1648 16812032u,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1649 (LPDDBLTFX)&v9);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1650 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1651 LeaveCriticalSection(&pGame->pThreadWardInstance->cs2);*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1652 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1653
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1654 //----- (0046BBD0) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1655 void *AsyncMouse::Clip()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1656 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1657 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1658 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1659 void *result; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1660 std::string v1; // [sp-18h] [bp-30h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1661 const char *v2; // [sp-8h] [bp-20h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1662 int v3; // [sp-4h] [bp-1Ch]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1663 RECT Rect; // [sp+0h] [bp-18h]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1664 std::string *v5; // [sp+10h] [bp-8h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1665 int a3; // [sp+17h] [bp-1h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1666
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1667 SetWindowPos(hWnd, HWND_MESSAGE|0x2, 320, 240, 640, 480, 0);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1668 Rect.left = 325;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1669 Rect.top = 245;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1670 Rect.right = 326;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1671 Rect.bottom = 246;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1672 result = (void *)ClipCursor(&Rect);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1673 if ( !result )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1674 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1675 MessageBoxW(nullptr, L"Could not clip cursor to screen!", L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\MouseAsync.cpp:827", 0);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1676 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1677 return result;*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1678 return 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1679 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1680
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1681 //----- (0046BC4E) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1682 void __stdcall AsyncMouse::AsyncMouseThread(int a1)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1683 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1684 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1685 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1686 while ( 1 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1687 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1688 while ( !pAsyncMouse )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1689 Sleep(1);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1690 if ( !AsyncMouse::Thread(pAsyncMouse) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1691 ExitThread(0);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1692 Sleep(18);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1693 }*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1694 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1695
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1696 //----- (0046BC73) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1697 void AsyncMouse::dtor_sub_46BC73()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1698 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1699 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1700 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1701 int v1; // edi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1702 void **v2; // ebx@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1703 void *v3; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1704 void *v4; // eax@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1705 int v5; // [sp+0h] [bp-4h]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1706
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1707 v5 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1708 v1 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1709 v2 = *(void ***)(this + 4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1710 v3 = *v2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1711 while ( v3 != v2 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1712 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1713 v4 = v3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1714 v3 = *(void **)v3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1715 AsyncMouse::unk_46BD2D((void *)v1, (int)&v5, v4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1716 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1717 free(*(void **)(v1 + 4));
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1718 *(int *)(v1 + 4) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1719 *(int *)(v1 + 8) = 0;*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1720 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1721
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1722 //----- (0046BCAB) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1723 int AsyncMouse::_46BCAB()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1724 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1725 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1726 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1727 void *v1; // ebx@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1728 void **v2; // edi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1729 void *v3; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1730 void *v4; // eax@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1731 int result; // eax@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1732 int v6; // [sp+0h] [bp-4h]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1733
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1734 v6 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1735 v1 = (void *)this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1736 v2 = *(void ***)(this + 4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1737 v3 = *v2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1738 while ( v3 != v2 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1739 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1740 v4 = v3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1741 v3 = *(void **)v3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1742 result = AsyncMouse::unk_46BD2D(v1, (int)&v6, v4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1743 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1744 return result;*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1745 return 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1746 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1747 // 46BCAB: using guessed type int __thiscall AsyncMouse__46BCAB(int);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1748
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1749 //----- (0046BCD2) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1750 int AsyncMouse::unk_46BCD2(int a2, int a3, int a4)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1751 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1752 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1753 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1754 void *v4; // edi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1755 void *v5; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1756 void *v6; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1757 int result; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1758
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1759 v4 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1760 v5 = AsyncMouse::unk_46BD09((void *)a3, *(void **)(a3 + 4));
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1761 v6 = v5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1762 *(int *)(a3 + 4) = v5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1763 **((int **)v5 + 1) = v5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1764 AsyncMouse::unk_46BD66((char *)v5 + 8, a4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1765 result = a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1766 ++*((int *)v4 + 2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1767 *(int *)a2 = v6;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1768 return result;*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1769 return 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1770 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1771 // 46BD66: using guessed type int __fastcall AsyncMouse__unk__46BD66(int, int);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1772
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1773 //----- (0046BD09) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1774 void *AsyncMouse::unk_46BD09(void *a1, void *a2)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1775 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1776 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1777 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1778 void *result; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1779 void *v3; // ecx@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1780 void *v4; // ecx@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1781
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1782 result = operator new(0x18u);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1783 v3 = a1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1784 if ( !a1 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1785 v3 = result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1786 *(int *)result = v3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1787 v4 = a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1788 if ( !a2 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1789 v4 = result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1790 *((int *)result + 1) = v4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1791 return result;*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1792 return 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1793 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1794
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1795 //----- (0046BD2D) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1796 int AsyncMouse::unk_46BD2D(int a2, void *a3)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1797 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1798 __debugbreak();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1799 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1800 void *v3; // edi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1801 int v4; // ebx@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1802 int result; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1803
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1804 v3 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1805 v4 = *(int *)a3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1806 **((int **)a3 + 1) = *(int *)a3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1807 *(int *)(*(int *)a3 + 4) = *((int *)a3 + 1);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1808 (**((void (__stdcall ***)(int))a3 + 2))(0);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1809 free(a3);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1810 result = a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1811 --*((int *)v3 + 2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1812 *(int *)a2 = v4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1813 return result;*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1814 return 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1815 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1816
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1817 //----- (0046BD66) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1818 int AsyncMouse::unk_46BD66(int a1, int a2)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1819 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1820 int result; // eax@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1821
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1822 if ( a1 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1823 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1824 *(int *)(a1 + 4) = *(int *)(a2 + 4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1825 *(int *)(a1 + 8) = *(int *)(a2 + 8);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1826 result = *(int *)(a2 + 12);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1827 *(int *)(a1 + 12) = result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1828 //*(int *)a1 = &AsyncMouse::unk::vdtor_ptr;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1829 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1830 return result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1831 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1832 // 46BD66: using guessed type int __fastcall AsyncMouse__unk__46BD66(int, int);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1833 // 4D8734: using guessed type int (__stdcall *AsyncMouse__unk__vdtor_ptr)(char);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1834
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1835
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1836
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1837
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1838
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1839
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1840
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1841
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1842
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1843
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1844
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1845
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1846
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1847
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1848
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1849
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1850
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1851
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1852
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1853 /*
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1854 //----- (0043B9FF) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1855 DirectInputMouse *__thiscall DirectInputMouse::DirectInputMouse(DirectInputMouse *this)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1856 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1857 DirectInputMouse *v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1858 HRESULT v2; // eax@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1859 signed int v4; // [sp-18h] [bp-24h]@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1860 char *v5; // [sp-14h] [bp-20h]@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1861 int v6; // [sp-10h] [bp-1Ch]@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1862 const char *v7; // [sp-Ch] [bp-18h]@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1863 int v8; // [sp-8h] [bp-14h]@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1864 unsigned int v9; // [sp-4h] [bp-10h]@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1865 CheckHRESULT_stru0 v10; // [sp+8h] [bp-4h]@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1866
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1867 v1 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1868 this->field_8 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1869 LOBYTE(this->field_1C) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1870 this->field_28 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1871 this->vdestructor_ptr = (int)&DirectInputMouse_pvdtor;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1872 if ( pVersion->pVersionInfo.dwPlatformId != VER_PLATFORM_WIN32_NT || pVersion->pVersionInfo.dwMajorVersion != 4 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1873 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1874 v9 = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1875 v8 = 30;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1876 v7 = "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\DirectInputMouse.cpp";
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1877 v6 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1878 v5 = (char *)&this->pDirectInput;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1879 v4 = 1280;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1880 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1881 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1882 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1883 v9 = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1884 v8 = 28;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1885 v7 = "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\DirectInputMouse.cpp";
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1886 v6 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1887 v5 = (char *)&this->pDirectInput;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1888 v4 = 768;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1889 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1890 v2 = DirectInputCreateA(hInstance, v4, v5, v6);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1891 CheckHRESULT(&v10, v2, v7, v8, v9);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1892 DirectInputMouse::CreateDevice(v1);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1893 DirectInputMouse::43BB18(v1);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1894 v1->field_20 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1895 v1->field_24 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1896 return v1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1897 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1898 // 4C8880: using guessed type int __stdcall DirectInputCreateA(int, int, int, int);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1899 // 4D8608: using guessed type int (__stdcall *DirectInputMouse_pvdtor)(char);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1900
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1901 //----- (0043BA80) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1902 void *__thiscall DirectInputMouse::vdtor(void *this, bool a2)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1903 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1904 void *v2; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1905
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1906 v2 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1907 DirectInputMouse::dtor(this);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1908 if ( a2 & 1 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1909 free(v2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1910 return v2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1911 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1912
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1913 //----- (0043BA9C) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1914 int __thiscall DirectInputMouse::dtor(void *this)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1915 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1916 void *v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1917 int v2; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1918 int result; // eax@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1919
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1920 v1 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1921 v2 = *((int *)this + 2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1922 *(int *)this = &DirectInputMouse_pvdtor;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1923 if ( v2 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1924 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1925 (*(void (__stdcall **)(int))(*(int *)v2 + 32))(v2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1926 (*(void (__stdcall **)(int))(**((int **)v1 + 2) + 8))(*((int *)v1 + 2));
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1927 *((int *)v1 + 2) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1928 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1929 result = (*(int (__stdcall **)(int))(**((int **)v1 + 1) + 8))(*((int *)v1 + 1));
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1930 *((int *)v1 + 1) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1931 return result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1932 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1933 // 4D8608: using guessed type int (__stdcall *DirectInputMouse_pvdtor)(char);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1934
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1935 //----- (0043BACE) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1936 void __thiscall DirectInputMouse::CreateDevice(DirectInputMouse *this)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1937 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1938 DirectInputMouse *v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1939 HRESULT v2; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1940 CheckHRESULT_stru0 v3; // [sp+4h] [bp-4h]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1941
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1942 v1 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1943 v2 = ((int (__stdcall *)(int, int, int, int, int))this->pDirectInput->lpVtbl->field_10)(
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1944 this->pDirectInput,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1945 2,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1946 DirectInputMouse_enumerator,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1947 this,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1948 1);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1949 CheckHRESULT(&v3, v2, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\DirectInputMouse.cpp", 57, 1u);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1950 if ( !LOBYTE(v1->field_1C) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1951 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1952 v3.vdestructor_ptr = (void (__thiscall ***)(CheckHRESULT_stru0 *, bool))"Error: No mouse found";
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1953 _CxxThrowException((int)&v3, (int)&dword_4DBD94);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1954 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1955 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1956 // 43BC61: using guessed type int __stdcall DirectInputMouse_enumerator(int, int);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1957 // 4DBD94: using guessed type int dword_4DBD94;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1958
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1959 //----- (0043BB18) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1960 int __thiscall DirectInputMouse::43BB18(DirectInputMouse *this)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1961 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1962 char *v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1963 HRESULT v2; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1964 HRESULT v3; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1965 HRESULT v4; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1966 unsigned int v6; // [sp+0h] [bp-Ch]@0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1967 CheckHRESULT_stru0 v7; // [sp+8h] [bp-4h]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1968
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1969 v1 = (char *)&this->field_8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1970 v2 = ((int (__stdcall *)(int, int, int, int, int))this->pDirectInput->lpVtbl->field_C)(
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1971 this->pDirectInput,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1972 &this->field_C,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1973 &this->field_8,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1974 0,
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1975 "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\DirectInputMouse.cpp");
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1976 CheckHRESULT(&v7, v2, (const char *)0x40, 1, v6);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1977 v3 = (*(int (__stdcall **)(int, int))(**(int **)v1 + 44))(*(int *)v1, dword_4C9920);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1978 CheckHRESULT(&v7, v3, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\DirectInputMouse.cpp", 65, 1u);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1979 v4 = (*(int (__stdcall **)(int, int, int))(**(int **)v1 + 52))(*(int *)v1, hWnd, 6);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1980 CheckHRESULT(&v7, v4, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\DirectInputMouse.cpp", 66, 1u);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1981 return (*(int (__cdecl **)(int))(**(int **)v1 + 28))(*(int *)v1);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1982 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1983 // 4C9920: using guessed type int dword_4C9920[16];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1984
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1985 //----- (0043BB89) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1986 bool __thiscall DirectInputMouse::43BB89(DirectInputMouse *this)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1987 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1988 DirectInputMouse *v1; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1989 bool result; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1990 HRESULT v3; // eax@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1991 __int32 v4; // ecx@6
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1992 __int32 v5; // eax@6
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1993 __int32 v6; // edx@6
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1994 int v7; // ecx@12
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1995 bool v8; // ecx@12
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1996 signed int v9; // edx@12
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1997 HRESULT a2; // [sp+4h] [bp-14h]@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1998 int v11; // [sp+8h] [bp-10h]@12
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1999 char v12; // [sp+10h] [bp-8h]@18
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2000 char v13; // [sp+11h] [bp-7h]@20
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2001 char v14; // [sp+12h] [bp-6h]@22
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2002 char v15; // [sp+13h] [bp-5h]@24
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2003 char v18; // [sp+14h] [bp-4h]@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2004
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2005 v1 = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2006 result = this->field_8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2007 if ( result )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2008 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2009 if ( (*(int (__stdcall **)(bool, signed int, HRESULT *))(*(int *)result + 36))(result, 16, &a2) == -2147024866
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2010 && !(*(int (__stdcall **)(int))(*(int *)v1->field_8 + 28))(v1->field_8) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2011 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2012 v3 = (*(int (__stdcall **)(int, signed int, HRESULT *))(*(int *)v1->field_8 + 36))(v1->field_8, 16, &a2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2013 CheckHRESULT((CheckHRESULT_stru0 *)&v18, v3, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\DirectInputMouse.cpp", 80, 1u);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2014 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2015 v4 = v1->field_20 + a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2016 v5 = 640;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2017 v6 = v1->field_20 + a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2018 if ( v4 >= 640 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2019 v6 = 640;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2020 if ( v6 >= 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2021 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2022 if ( v4 < 640 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2023 v5 = v1->field_20 + a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2024 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2025 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2026 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2027 v5 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2028 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2029 v7 = v11;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2030 v1->field_20 = v5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2031 v8 = v1->field_24 + v7;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2032 result = 480;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2033 v9 = v8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2034 if ( v8 >= 480 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2035 v9 = 480;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2036 if ( v9 >= 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2037 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2038 if ( v8 < 480 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2039 result = v8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2040 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2041 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2042 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2043 result = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2044 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2045 v1->field_28 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2046 v1->field_24 = result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2047 if ( v12 & 0x80 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2048 v1->field_28 = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2049 if ( v13 & 0x80 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2050 v1->field_28 |= 2u;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2051 if ( v14 & 0x80 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2052 v1->field_28 |= 4u;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2053 if ( v15 & 0x80 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2054 v1->field_28 |= 8u;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2055 LOBYTE(result) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2056 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2057 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2058 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2059 LOBYTE(result) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2060 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2061 return result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2062 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2063
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2064 //----- (0043BC61) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2065 signed int __stdcall DirectInputMouse_enumerator(int a1, int a2)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2066 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2067 signed int result; // eax@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2068
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2069 if ( *(char *)(a1 + 36) & 2 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2070 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2071 *(int *)(a2 + 12) = *(int *)(a1 + 4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2072 *(int *)(a2 + 16) = *(int *)(a1 + 8);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2073 *(int *)(a2 + 20) = *(int *)(a1 + 12);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2074 *(int *)(a2 + 24) = *(int *)(a1 + 16);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2075 *(char *)(a2 + 28) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2076 result = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2077 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2078 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2079 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2080 result = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2081 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2082 return result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2083 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2084 // 43BC61: using guessed type int __stdcall DirectInputMouse_enumerator(int, int);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2085 */