annotate stru9.cpp @ 26:93bf1d5f6a6d

Game loading.
author Nomad
date Tue, 16 Oct 2012 00:05:53 +0200
parents 8b8875f5b359
children 0f4ed4f0f472
rev   line source
0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1 #include "stru9.h"
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2 #include "IndoorCameraD3D.h"
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
4 #include "mm7_data.h"
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
6
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
7
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
8 //----- (00498377) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
9 bool stru9::_498377(struct RenderVertexSoft *a1, unsigned int uNumVertices, struct IndoorCameraD3D_Vec4 *a3, struct RenderVertexSoft *pVertices, unsigned int *pOutNumVertices)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
10 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
11 bool result; // eax@7
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
12 unsigned int *v7; // ebx@7
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
13 char *v8; // esi@8
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
14 RenderVertexSoft *v9; // ecx@9
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
15 double v10; // st7@12
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
16 double v11; // st6@12
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
17 RenderVertexSoft *v12; // esi@13
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
18 int v13; // ecx@25
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
19 VertexBuffer *v14; // edx@26
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
20 char *v15; // eax@26
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
21 unsigned int i; // ecx@26
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
22 bool v17; // [sp+0h] [bp-28h]@9
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
23 char *v18; // [sp+10h] [bp-18h]@8
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
24 RenderVertexSoft *v19; // [sp+14h] [bp-14h]@0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
25 RenderVertexSoft *v20; // [sp+18h] [bp-10h]@0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
26 signed int v21; // [sp+1Ch] [bp-Ch]@7
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
27 RenderVertexSoft *a2; // [sp+20h] [bp-8h]@8
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
28 stru9 *thisa; // [sp+24h] [bp-4h]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
29 signed int a3a; // [sp+38h] [bp+10h]@12
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
30 int a3b; // [sp+38h] [bp+10h]@25
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
31
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
32 thisa = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
33
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
34 static RenderVertexSoft static_AE3FB4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
35 static bool __init_flag1 = false;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
36 if (!__init_flag1)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
37 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
38 __init_flag1 = true;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
39
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
40 static_AE3FB4.flt_2C = 0.0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
41 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
42
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
43 static stru312 static_AE3FA4; // idb
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
44 static bool __init_flag2 = false;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
45 if (!__init_flag2)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
46 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
47 __init_flag2 = true;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
48
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
49 //stru312::stru312(&static_AE3FA4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
50 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
51
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
52 static VertexBuffer static_AE33A0; // idb
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
53 static bool __init_flag3 = false;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
54 if (!__init_flag3)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
55 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
56 __init_flag3 = true;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
57
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
58 //VertexBuffer::VertexBuffer(&static_AE33A0);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
59 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
60
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
61 result = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
62 v7 = pOutNumVertices;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
63 v21 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
64 if ( (signed int)uNumVertices <= 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
65 goto LABEL_32;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
66 a2 = a1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
67 v8 = (char *)&a3->y;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
68 v18 = (char *)&a3->y;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
69 do
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
70 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
71 v17 = result + 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
72 v9 = &a1[(result + 1) % (signed int)uNumVertices];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
73 if ( a2->vWorldPosition.x != v9->vWorldPosition.x
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
74 || a2->vWorldPosition.y != v9->vWorldPosition.y
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
75 || a2->vWorldPosition.z != v9->vWorldPosition.z )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
76 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
77 v10 = *((float *)v8 + 1);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
78 v11 = *(float *)v8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
79 ++v21;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
80 result = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
81 static_AE3FA4.flt_0 = *((float *)v8 - 1);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
82 static_AE33A0.uNumVertices = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
83 a3a = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
84 static_AE3FA4.flt_4 = v11;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
85 static_AE3FA4.flt_8 = v10;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
86 if ( (signed int)*v7 <= 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
87 goto LABEL_32;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
88 do
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
89 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
90 v12 = &pVertices[result];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
91 if ( result )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
92 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
93 if ( _4989E1(v20, &pVertices[result], a2, &static_AE3FA4)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
94 && _498774(v20, v12, a2, &static_AE3FA4, &static_AE3FB4) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
95 AddVertex(&static_AE33A0, &static_AE3FB4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
96 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
97 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
98 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
99 v19 = &pVertices[result];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
100 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
101 v20 = v12;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
102 if ( _49895A(v12, a2, &static_AE3FA4) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
103 AddVertex(&static_AE33A0, v12);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
104 v7 = pOutNumVertices;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
105 result = a3a++ + 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
106 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
107 while ( a3a < (signed int)*pOutNumVertices );
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
108 if ( !static_AE33A0.uNumVertices )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
109 goto LABEL_32;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
110 if ( _4989E1(v12, v19, a2, &static_AE3FA4)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
111 && _498774(v12, v19, a2, &static_AE3FA4, &static_AE3FB4) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
112 AddVertex(&static_AE33A0, &static_AE3FB4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
113 v13 = static_AE33A0.uNumVertices;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
114 a3b = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
115 if ( static_AE33A0.uNumVertices > 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
116 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
117 v14 = &static_AE33A0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
118 v15 = (char *)&pVertices->vWorldPosition.y;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
119 for ( i = (char *)&static_AE33A0.pVertices[0].vWorldPosition.y - (char *)pVertices;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
120 ;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
121 i = (char *)&static_AE33A0.pVertices[0].vWorldPosition.y - (char *)pVertices )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
122 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
123 ++a3b;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
124 *((int *)v15 - 1) = *(unsigned int *)(&v14->pVertices[0].vWorldPosition.x);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
125 v14 = (VertexBuffer *)((char *)v14 + 48);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
126 *(float *)v15 = *(float *)&v15[(char *)&static_AE33A0 - (char *)pVertices];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
127 *((float *)v15 + 1) = *(float *)&v15[i];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
128 *((float *)v15 + 8) = *(float *)&v15[(char *)&static_AE33A0.pVertices[0].flt_20 - (char *)pVertices];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
129 *((float *)v15 + 9) = *(float *)&v15[(char *)&static_AE33A0.pVertices[0].u - (char *)pVertices];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
130 v13 = static_AE33A0.uNumVertices;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
131 v15 += 48;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
132 if ( a3b >= static_AE33A0.uNumVertices )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
133 break;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
134 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
135 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
136 v7 = pOutNumVertices;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
137 v8 = v18;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
138 *pOutNumVertices = v13;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
139 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
140 result = v17;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
141 ++a2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
142 v8 += 24;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
143 v18 = v8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
144 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
145 while ( v17 < (signed int)uNumVertices );
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
146 if ( v21 < 3 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
147 LABEL_32:
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
148 *v7 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
149 return 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
150 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
151 // AE3FE4: using guessed type char static_init_flag__AE3FB4_bit1__AE3FA4_bit2__AE33A0_bit3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
152
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
153 //----- (004985FB) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
154 bool stru9::_4985FB(struct RenderVertexSoft *a1, signed int a2, struct RenderVertexSoft *a3, unsigned int *pOutNumVertices, struct Vec3_float_ *a5, float a6, char *a7, int unused)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
155 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
156 RenderVertexSoft *v9; // ecx@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
157 Vec3_float_ *v10; // esi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
158 char *v11; // ebx@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
159 RenderVertexSoft *v12; // edi@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
160 double v13; // st7@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
161 bool result; // eax@4
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
162 signed int v15; // edx@9
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
163 RenderVertexSoft *v16; // ecx@9
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
164 double v17; // st7@9
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
165 double v18; // st6@12
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
166 signed int v19; // [sp+Ch] [bp-Ch]@7
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
167 float v20; // [sp+10h] [bp-8h]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
168 bool v21; // [sp+14h] [bp-4h]@2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
169
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
170 v9 = a1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
171 v10 = a5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
172 v11 = (char *)&a1->vWorldPosition.z;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
173 v12 = a3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
174 v13 = a1->vWorldPosition.y * a5->y + a5->x * a1->vWorldPosition.x + a1->vWorldPosition.z * a5->z;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
175 v20 = v13;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
176 v21 = v13 >= a6;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
177 result = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
178 *pOutNumVertices = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
179 if ( a2 <= 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
180 goto LABEL_19;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
181 while ( 1 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
182 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
183 v19 = result + 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
184 if ( v21 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
185 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
186 ++a3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
187 memcpy(v12, v11 - 8, 0x30u);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
188 ++*pOutNumVertices;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
189 v10 = a5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
190 v12 = a3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
191 v9 = a1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
192 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
193 v15 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
194 v16 = &v9[(result + 1) % a2];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
195 v17 = v16->vWorldPosition.z * v10->z + v16->vWorldPosition.y * v10->y + v10->x * v16->vWorldPosition.x;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
196 if ( v17 >= a6 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
197 v15 = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
198 if ( v21 != v15 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
199 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
200 v18 = (a6 - v20) / (v17 - v20);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
201 v12->vWorldPosition.x = (v16->vWorldPosition.x - *((float *)v11 - 2)) * v18 + *((float *)v11 - 2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
202 ++v12;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
203 a3 = v12;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
204 *((float *)v12 - 11) = (v16->vWorldPosition.y - *((float *)v11 - 1)) * v18 + *((float *)v11 - 1);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
205 *((float *)v12 - 10) = (v16->vWorldPosition.z - *(float *)v11) * v18 + *(float *)v11;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
206 *((float *)v12 - 3) = (v16->u - *((float *)v11 + 7)) * v18 + *((float *)v11 + 7);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
207 *((float *)v12 - 2) = (v16->v - *((float *)v11 + 8)) * v18 + *((float *)v11 + 8);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
208 ++*pOutNumVertices;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
209 *a7 = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
210 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
211 ++result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
212 v11 += 48;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
213 v21 = v15;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
214 v20 = v17;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
215 if ( v19 >= a2 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
216 break;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
217 v9 = a1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
218 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
219 result = (bool)pOutNumVertices;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
220 if ( (signed int)*pOutNumVertices >= 3 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
221 LOBYTE(result) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
222 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
223 LABEL_19:
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
224 LOBYTE(result) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
225 return result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
226 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
227
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
228 //----- (00498737) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
229 void stru9::AddVertex(struct VertexBuffer *pVertexBuffer, struct RenderVertexSoft *pVertex)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
230 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
231 RenderVertexSoft *v3; // eax@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
232
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
233 v3 = &pVertexBuffer->pVertices[pVertexBuffer->uNumVertices];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
234 v3->vWorldPosition.x = pVertex->vWorldPosition.x;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
235 v3->vWorldPosition.y = pVertex->vWorldPosition.y;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
236 v3->vWorldPosition.z = pVertex->vWorldPosition.z;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
237 v3->u = pVertex->u;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
238 v3->v = pVertex->v;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
239 ++pVertexBuffer->uNumVertices;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
240 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
241
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
242 //----- (00498774) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
243 bool stru9::_498774(struct RenderVertexSoft *a1, struct RenderVertexSoft *a2, struct RenderVertexSoft *a3, struct stru312 *a4, struct RenderVertexSoft *a5)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
244 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
245 RenderVertexSoft *v6; // ecx@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
246 bool result; // eax@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
247 double v8; // st7@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
248 __int16 v9; // fps@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
249 double v10; // st7@6
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
250 double v11; // st6@8
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
251 double v12; // st6@18
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
252 char v13; // c0@24
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
253 char v14; // c2@24
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
254 char v15; // c3@24
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
255 float a1a; // [sp+10h] [bp+8h]@5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
256
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
257 static stru312 static_AE3388;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
258 /*if ( !(static_init_flag__AE3388_bit1__AE3378_bit2 & 1) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
259 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
260 static_init_flag__AE3388_bit1__AE3378_bit2 |= 1u;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
261 stru312::stru312(&static_AE3388);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
262 atexit(nullsub_16);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
263 }*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
264 static stru312 static_AE3378;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
265 /*if ( !(static_init_flag__AE3388_bit1__AE3378_bit2 & 2) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
266 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
267 static_init_flag__AE3388_bit1__AE3378_bit2 |= 2u;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
268 stru312::stru312(&static_AE3378);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
269 atexit(nullsub_15);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
270 }*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
271 v6 = a1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
272 static_AE3378.flt_0 = a1->vWorldPosition.x - a3->vWorldPosition.x;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
273 static_AE3378.flt_4 = a1->vWorldPosition.y - a3->vWorldPosition.y;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
274 HIWORD(result) = HIWORD(a4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
275 static_AE3378.flt_8 = a1->vWorldPosition.z - a3->vWorldPosition.z;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
276 static_AE3388.flt_0 = a2->vWorldPosition.x - a1->vWorldPosition.x;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
277 static_AE3388.flt_4 = a2->vWorldPosition.y - a1->vWorldPosition.y;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
278 static_AE3388.flt_8 = a2->vWorldPosition.z - a1->vWorldPosition.z;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
279 a1a = static_AE3388.flt_0 * a4->flt_0 + static_AE3388.flt_8 * a4->flt_8 + static_AE3388.flt_4 * a4->flt_4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
280 v8 = static_AE3378.flt_0 * a4->flt_0 + static_AE3378.flt_8 * a4->flt_8 + static_AE3378.flt_4 * a4->flt_4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
281 //UNDEF(v9);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
282 if ( a1a != 0.0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
283 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
284 v10 = -(v8 / a1a);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
285 if ( a1a <= 0.0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
286 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
287 if ( v10 <= 0.0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
288 v12 = 0.0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
289 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
290 v12 = v10;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
291 if ( v12 <= 1.0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
292 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
293 if ( v10 <= 0.0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
294 v10 = (float)0.0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
295 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
296 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
297 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
298 v10 = 1.0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
299 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
300 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
301 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
302 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
303 if ( v10 >= 1.0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
304 v11 = 1.0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
305 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
306 v11 = v10;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
307 if ( v11 >= 0.0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
308 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
309 if ( v10 >= 1.0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
310 v10 = (float)1.0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
311 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
312 else
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
313 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
314 v10 = 0.0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
315 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
316 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
317 result = (bool)a5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
318 a5->vWorldPosition.x = (a2->vWorldPosition.x - v6->vWorldPosition.x) * v10 + v6->vWorldPosition.x;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
319 a5->vWorldPosition.y = (a2->vWorldPosition.y - v6->vWorldPosition.y) * v10 + v6->vWorldPosition.y;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
320 a5->vWorldPosition.z = (a2->vWorldPosition.z - v6->vWorldPosition.z) * v10 + v6->vWorldPosition.z;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
321 a5->u = (a2->u - v6->u) * v10 + v6->u;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
322 a5->v = (a2->v - v6->v) * v10 + v6->v;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
323 goto LABEL_15;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
324 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
325 v13 = v8 < 0.0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
326 v14 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
327 v15 = v8 == 0.0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
328 BYTE1(result) = HIBYTE(v9);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
329 if ( v8 < 0.0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
330 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
331 LABEL_15:
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
332 LOBYTE(result) = 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
333 return result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
334 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
335 LOBYTE(result) = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
336 return result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
337 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
338 // AE3398: using guessed type char static_init_flag__AE3388_bit1__AE3378_bit2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
339
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
340 //----- (0049895A) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
341 bool stru9::_49895A(struct RenderVertexSoft *a1, struct RenderVertexSoft *a2, struct stru312 *a3)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
342 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
343 double v4; // st7@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
344 double v5; // st7@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
345 __int16 v6; // fps@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
346 char v7; // c0@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
347 char v8; // c2@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
348 char v9; // c3@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
349 bool result; // eax@3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
350
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
351 static stru312 static_F942A0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
352 /*static bool __init_flag1 = false;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
353 if (!__init_flag1)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
354 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
355 __init_flag1 = true;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
356
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
357 stru312::stru312(&static_F942A0);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
358 }*/
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
359
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
360 static_F942A0.flt_0 = a1->vWorldPosition.x - a2->vWorldPosition.x;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
361 static_F942A0.flt_4 = a1->vWorldPosition.y - a2->vWorldPosition.y;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
362 v4 = a1->vWorldPosition.z - a2->vWorldPosition.z;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
363 HIWORD(result) = HIWORD(a3);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
364 static_F942A0.flt_8 = v4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
365 v5 = v4 * a3->flt_8 + static_F942A0.flt_4 * a3->flt_4 + static_F942A0.flt_0 * a3->flt_0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
366 //UNDEF(v6);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
367 flt_F942B0 = v5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
368 v7 = v5 < 0.0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
369 v8 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
370 v9 = v5 == 0.0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
371 BYTE1(result) = HIBYTE(v6);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
372 LOBYTE(result) = v5 >= 0.0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
373 return result;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
374 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
375
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
376
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
377 //----- (004989E1) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
378 bool stru9::_4989E1(struct RenderVertexSoft *a1, struct RenderVertexSoft *a2, struct RenderVertexSoft *a3, struct stru312 *a4)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
379 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
380 bool r1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
381 bool r2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
382
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
383 r1 = _49895A(a1, a3, a4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
384 r2 = _49895A(a2, a3, a4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
385 return !r1 && r2 == 1 ||
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
386 r1 == 1 && !r2;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
387 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
388
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
389 //----- (004980B9) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
390 bool stru9::_4980B9(RenderVertexSoft *a1, signed int a2, float a3, float a4, float a5, RenderVertexSoft *a6, unsigned int *pOutNumVertices)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
391 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
392 bool result; // eax@7
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
393 unsigned int *v9; // ebx@7
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
394 char *v10; // edi@8
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
395 RenderVertexSoft *v11; // esi@9
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
396 RenderVertexSoft *v12; // ecx@9
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
397 double v13; // st7@12
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
398 double v14; // st6@12
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
399 double v15; // st5@12
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
400 RenderVertexSoft *v16; // edi@13
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
401 int v17; // ecx@25
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
402 VertexBuffer *v18; // edx@26
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
403 char *v19; // eax@26
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
404 unsigned int i; // ecx@26
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
405 bool v21; // [sp+0h] [bp-24h]@9
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
406 char *v22; // [sp+Ch] [bp-18h]@8
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
407 RenderVertexSoft *a2a; // [sp+10h] [bp-14h]@0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
408 RenderVertexSoft *a1a; // [sp+14h] [bp-10h]@0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
409 signed int v25; // [sp+18h] [bp-Ch]@7
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
410 signed int v26; // [sp+1Ch] [bp-8h]@12
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
411 int v27; // [sp+1Ch] [bp-8h]@25
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
412 stru9 *thisa; // [sp+20h] [bp-4h]@1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
413
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
414 thisa = this;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
415
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
416 static RenderVertexSoft stru_AE4BFC;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
417 static bool __init_flag1 = false;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
418 if (!__init_flag1)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
419 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
420 __init_flag1 = true;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
421
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
422 stru_AE4BFC.flt_2C = 0.0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
423 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
424
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
425 static stru312 static_sub_4980B9_stru_AE4BEC; // idb
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
426 static bool __init_flag2 = false;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
427 if (!__init_flag2)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
428 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
429 __init_flag2 = true;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
430
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
431 //stru312::stru312(&static_sub_4980B9_stru_AE4BEC);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
432 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
433
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
434 static VertexBuffer static_sub_4980B9_stru_AE3FE8; // idb
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
435 static bool __init_flag3 = false;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
436 if (!__init_flag3)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
437 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
438 __init_flag3 = true;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
439
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
440 //VertexBuffer::VertexBuffer(&static_sub_4980B9_stru_AE3FE8);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
441 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
442
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
443 result = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
444 v9 = pOutNumVertices;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
445 v25 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
446 if ( a2 <= 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
447 goto LABEL_32;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
448 v10 = (char *)&a1->vWorldPosition.z;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
449 v22 = (char *)&a1->vWorldPosition.z;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
450 do
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
451 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
452 v11 = (RenderVertexSoft *)(v10 - 8);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
453 v21 = result + 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
454 v12 = &a1[(result + 1) % a2];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
455 if ( *((float *)v10 - 2) != v12->vWorldPosition.x
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
456 || *((float *)v10 - 1) != v12->vWorldPosition.y
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
457 || *(float *)v10 != v12->vWorldPosition.z )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
458 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
459 v13 = v12->vWorldPosition.x - v11->vWorldPosition.x;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
460 v14 = v12->vWorldPosition.y - *((float *)v10 - 1);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
461 v15 = v12->vWorldPosition.z - *(float *)v10;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
462 ++v25;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
463 result = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
464 static_sub_4980B9_stru_AE3FE8.uNumVertices = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
465 v26 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
466 static_sub_4980B9_stru_AE4BEC.flt_0 = a4 * v15 - v14 * a5;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
467 static_sub_4980B9_stru_AE4BEC.flt_4 = v13 * a5 - v15 * a3;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
468 static_sub_4980B9_stru_AE4BEC.flt_8 = v14 * a3 - v13 * a4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
469 if ( (signed int)*v9 <= 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
470 goto LABEL_32;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
471 do
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
472 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
473 v16 = &a6[result];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
474 if ( result )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
475 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
476 if ( _4989E1(a1a, &a6[result], v11, &static_sub_4980B9_stru_AE4BEC)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
477 && _498774(a1a, v16, v11, &static_sub_4980B9_stru_AE4BEC, &stru_AE4BFC) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
478 AddVertex(&static_sub_4980B9_stru_AE3FE8, &stru_AE4BFC);
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 a2a = &a6[result];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
483 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
484 a1a = v16;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
485 if ( _49895A(v16, v11, &static_sub_4980B9_stru_AE4BEC) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
486 AddVertex(&static_sub_4980B9_stru_AE3FE8, v16);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
487 v9 = pOutNumVertices;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
488 result = v26++ + 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
489 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
490 while ( v26 < (signed int)*pOutNumVertices );
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
491 if ( !static_sub_4980B9_stru_AE3FE8.uNumVertices )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
492 goto LABEL_32;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
493 if ( _4989E1(v16, a2a, v11, &static_sub_4980B9_stru_AE4BEC)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
494 && _498774(v16, a2a, v11, &static_sub_4980B9_stru_AE4BEC, &stru_AE4BFC) )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
495 AddVertex(&static_sub_4980B9_stru_AE3FE8, &stru_AE4BFC);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
496 v17 = static_sub_4980B9_stru_AE3FE8.uNumVertices;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
497 v27 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
498 if ( static_sub_4980B9_stru_AE3FE8.uNumVertices > 0 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
499 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
500 v18 = &static_sub_4980B9_stru_AE3FE8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
501 v19 = (char *)&a6->vWorldPosition.y;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
502 for ( i = (char *)&static_sub_4980B9_stru_AE3FE8.pVertices[0].flt_20 - (char *)a6;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
503 ;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
504 i = (char *)&static_sub_4980B9_stru_AE3FE8.pVertices[0].flt_20 - (char *)a6 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
505 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
506 ++v27;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
507 *((int *)v19 - 1) = LODWORD(v18->pVertices[0].vWorldPosition.x);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
508 v18 = (VertexBuffer *)((char *)v18 + 48);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
509 *(float *)v19 = *(float *)&v19[(char *)&static_sub_4980B9_stru_AE3FE8 - (char *)a6];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
510 *((float *)v19 + 1) = *(float *)&v19[(char *)&static_sub_4980B9_stru_AE3FE8.pVertices[0].vWorldPosition.y
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
511 - (char *)a6];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
512 *((float *)v19 + 8) = *(float *)&v19[i];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
513 *((float *)v19 + 9) = *(float *)&v19[(char *)&static_sub_4980B9_stru_AE3FE8.pVertices[0].u - (char *)a6];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
514 v17 = static_sub_4980B9_stru_AE3FE8.uNumVertices;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
515 v19 += 48;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
516 if ( v27 >= static_sub_4980B9_stru_AE3FE8.uNumVertices )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
517 break;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
518 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
519 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
520 v9 = pOutNumVertices;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
521 v10 = v22;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
522 *pOutNumVertices = v17;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
523 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
524 result = v21;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
525 v10 += 48;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
526 v22 = v10;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
527 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
528 while ( v21 < a2 );
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
529 if ( v25 < 3 )
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
530 LABEL_32:
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
531 *v9 = 0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
532 return 1;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
533 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
534 // AE4C2C: using guessed type char static_sub_4980B9_byte_AE4C2C_init_flag;