Skip to content

Commit 2de1c5a

Browse files
author
Niko
committed
pc port optimization
1 parent e43a96c commit 2de1c5a

File tree

1 file changed

+12
-28
lines changed

1 file changed

+12
-28
lines changed

rebuild_PS1/TEST_DrawInstances.c

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -310,41 +310,25 @@ void DrawOneInst(struct Instance* curr)
310310
void* pCurr;
311311
void* pNext;
312312

313-
short zz;
314-
posWorld1[0] = ((mf->pos[0] + tempCoords[1].X) * mh->scale[0]) >> 8;
315-
posWorld1[1] = ((mf->pos[2] + tempCoords[1].Y) * mh->scale[2]) >> 8;
316-
posWorld1[2] = ((mf->pos[1] + tempCoords[1].Z) * mh->scale[1]) >> 8;
313+
// The X, Z, Y, is not a typo
314+
posWorld1[0] = ((((mf->pos[0] + tempCoords[1].X) * mh->scale[0]) >> 8) * curr->scale[0]) >> 12;
315+
posWorld1[1] = ((((mf->pos[1] + tempCoords[1].Z) * mh->scale[1]) >> 8) * curr->scale[1]) >> 12;
316+
posWorld1[2] = ((((mf->pos[2] + tempCoords[1].Y) * mh->scale[2]) >> 8) * curr->scale[2]) >> 12;
317317
posWorld1[3] = 0;
318-
zz = posWorld1[2];
319-
posWorld1[2] = posWorld1[1];
320-
posWorld1[1] = zz;
321-
posWorld1[0] = (posWorld1[0] * curr->scale[0]) >> 12;
322-
posWorld1[1] = (posWorld1[1] * curr->scale[1]) >> 12;
323-
posWorld1[2] = (posWorld1[2] * curr->scale[2]) >> 12;
324318
gte_ldv0(&posWorld1[0]);
325319

326-
posWorld2[0] = ((mf->pos[0] + tempCoords[2].X) * mh->scale[0]) >> 8;
327-
posWorld2[1] = ((mf->pos[2] + tempCoords[2].Y) * mh->scale[2]) >> 8;
328-
posWorld2[2] = ((mf->pos[1] + tempCoords[2].Z) * mh->scale[1]) >> 8;
320+
// The X, Z, Y, is not a typo
321+
posWorld2[0] = ((((mf->pos[0] + tempCoords[2].X) * mh->scale[0]) >> 8) * curr->scale[0]) >> 12;
322+
posWorld2[1] = ((((mf->pos[1] + tempCoords[2].Z) * mh->scale[1]) >> 8) * curr->scale[1]) >> 12;
323+
posWorld2[2] = ((((mf->pos[2] + tempCoords[2].Y) * mh->scale[2]) >> 8) * curr->scale[2]) >> 12;
329324
posWorld2[3] = 0;
330-
zz = posWorld2[2];
331-
posWorld2[2] = posWorld2[1];
332-
posWorld2[1] = zz;
333-
posWorld2[0] = (posWorld2[0] * curr->scale[0]) >> 12;
334-
posWorld2[1] = (posWorld2[1] * curr->scale[1]) >> 12;
335-
posWorld2[2] = (posWorld2[2] * curr->scale[2]) >> 12;
336325
gte_ldv1(&posWorld2[0]);
337326

338-
posWorld3[0] = ((mf->pos[0] + tempCoords[3].X) * mh->scale[0]) >> 8;
339-
posWorld3[1] = ((mf->pos[2] + tempCoords[3].Y) * mh->scale[2]) >> 8;
340-
posWorld3[2] = ((mf->pos[1] + tempCoords[3].Z) * mh->scale[1]) >> 8;
327+
// The X, Z, Y, is not a typo
328+
posWorld3[0] = ((((mf->pos[0] + tempCoords[3].X) * mh->scale[0]) >> 8) * curr->scale[0]) >> 12;
329+
posWorld3[1] = ((((mf->pos[1] + tempCoords[3].Z) * mh->scale[1]) >> 8) * curr->scale[1]) >> 12;
330+
posWorld3[2] = ((((mf->pos[2] + tempCoords[3].Y) * mh->scale[2]) >> 8) * curr->scale[2]) >> 12;
341331
posWorld3[3] = 0;
342-
zz = posWorld3[2];
343-
posWorld3[2] = posWorld3[1];
344-
posWorld3[1] = zz;
345-
posWorld3[0] = (posWorld3[0] * curr->scale[0]) >> 12;
346-
posWorld3[1] = (posWorld3[1] * curr->scale[1]) >> 12;
347-
posWorld3[2] = (posWorld3[2] * curr->scale[2]) >> 12;
348332
gte_ldv2(&posWorld3[0]);
349333

350334
gte_rtpt();

0 commit comments

Comments
 (0)