50 static int s_firsttime = 1;
54 printf (
"Extended MMX detected. Using the fastest method !\n");
58 printf (
"MMX detected. Using fast method !\n");
61 printf (
"Too bad ! No MMX detected.\n");
70 static int firsttime = 1;
72 printf (
"No MMX support compiled in\n");
87 extern const void ppc_zoom (
unsigned int *frompixmap,
unsigned int *topixmap,
88 unsigned int sizex,
unsigned int sizey,
142 static inline int ShiftRight(
int x,
int s) {
return (x<0) ? -((-x)>>s) : (x>>s); }
158 static int s_firstime = 1;
163 for (
int coefh = 0; coefh < 16; coefh++) {
165 for (
int coefv = 0; coefv < 16; coefv++) {
172 if (!(coefh || coefv))
175 int i1 = diffcoeffh * diffcoeffv;
176 int i2 = coefh * diffcoeffv;
177 int i3 = diffcoeffh * coefv;
178 int i4 = coefh * coefv;
188 i = (i1) | (i2 << 8) | (i3 << 16) | (i4 << 24);
205 static int s_wave = 0;
206 static int s_wavesp = 0;
208 int yy = y +
RAND () % 4 -
RAND () % 4 + s_wave / 10;
214 *px = (x << 4) +
firedec[yy] + (s_wave / 10);
218 s_wavesp +=
RAND () % 3 -
RAND () % 3;
223 s_wave += (s_wavesp / 10) +
RAND () % 3 -
RAND () % 3;
225 s_wavesp = (s_wavesp * 9) / 10;
262 dist = vx9 * vx9 + vy9 * vy9;
300 if (fvitesse < -3024)
306 ppx = -(-(vx * fvitesse) >> 16);
310 ppx = ((vx * fvitesse) >> 16);
314 ppy = -(-(vy * fvitesse) >> 16);
316 ppy = ((vy * fvitesse) >> 16);
331 fprintf (
stderr,
"setPixel ERROR : hors du tableau... %i, %i\n", x, y);
346 printf (
"setPixel ERROR : hors du tableau... %i\n", x);
361 printf (
"getPixel ERROR : hors du tableau... %i, %i\n", x, y);
367 unsigned int i = *(buffer + (x + y *
resolx));
368 c->
b = (i >> (
BLEU * 8)) & 0xff;
369 c->
v = (i >> (
VERT * 8)) & 0xff;
370 c->
r = (i >> (
ROUGE * 8)) & 0xff;
377 unsigned char *tmp8 =
nullptr;
381 printf (
"getPixel ERROR : hors du tableau... %i\n", x);
386 #ifdef __BIG_ENDIAN__
387 c->
b = *(
unsigned char *) (tmp8 = (
unsigned char *) (buffer + x));
388 c->
r = *(
unsigned char *) (++tmp8);
389 c->
v = *(
unsigned char *) (++tmp8);
390 c->
b = *(
unsigned char *) (++tmp8);
394 c->
b = *(
unsigned char *) (tmp8 = (
unsigned char *) (buffer + x));
395 c->
v = *(
unsigned char *) (++tmp8);
396 c->
r = *(
unsigned char *) (++tmp8);
402 void c_zoom (
unsigned int *lexpix1,
unsigned int *lexpix2,
403 unsigned int lprevX,
unsigned int lprevY,
404 const signed int *lbrutS,
const signed int *lbrutD)
409 unsigned int ax = (lprevX - 1) <<
PERTEDEC;
410 unsigned int ay = (lprevY - 1) <<
PERTEDEC;
412 int bufsize = lprevX * lprevY * 2;
413 int bufwidth = lprevX;
415 lexpix1[0]=lexpix1[lprevX-1]=lexpix1[lprevX*lprevY-1]=lexpix1[lprevX*lprevY-lprevX]=0;
417 for (
int myPos = 0; myPos < bufsize; myPos += 2) {
422 int brutSmypos = lbrutS[myPos];
424 int myPos2 = myPos + 1;
427 brutSmypos = lbrutS[myPos2];
439 if ((py >= (
int)ay) || (px >= (
int)ax)) {
449 int c2 = (c1 & 0x0000ff00) >> 8;
450 int c3 = (c1 & 0x00ff0000) >> 16;
451 int c4 = (c1 & 0xff000000) >> 24;
454 couleur.r = col1.r * c1 + col2.r * c2 + col3.r * c3 + col4.r * c4;
459 couleur.v = col1.v * c1 + col2.v * c2 + col3.v * c3 + col4.v * c4;
464 couleur.b = col1.b * c1 + col2.b * c2 + col3.b * c3 + col4.b * c4;
495 static unsigned char s_pertedec = 8;
496 static char s_firstTime = 1;
498 static constexpr int8_t INTERLACE_INCR { 16 };
501 static int s_interlaceStart = -2;
529 if (s_interlaceStart != -2)
534 static bool s_reverse =
false;
554 if (s_firstTime || zf) {
562 freebrutS = (
signed int *) calloc (resx * resy * 2 + 128,
sizeof(
signed int));
563 brutS = (
signed int *) ((1 + ((uintptr_t) (
freebrutS)) / 128) * 128);
565 freebrutD = (
signed int *) calloc (resx * resy * 2 + 128,
sizeof(
signed int));
566 brutD = (
signed int *) ((1 + ((uintptr_t) (
freebrutD)) / 128) * 128);
568 freebrutT = (
signed int *) calloc (resx * resy * 2 + 128,
sizeof(
signed int));
569 brutT = (
signed int *) ((1 + ((uintptr_t) (
freebrutT)) / 128) * 128);
576 for (
Uint y = 0; y < resy; y++, yofs += resx) {
577 int xofs = yofs << 1;
580 for (
Uint x = 0; x < resx; x++) {
581 brutS[xofs++] = xperte;
582 brutS[xofs++] = yperte;
590 for (
uint16_t us = 0; us < 0xffff; us++) {
592 roundf(1024 * sinf ((
float) us * 360
600 for (
int loopv =
prevY; loopv != 0;) {
601 static int s_decc = 0;
602 static int s_spdc = 0;
603 static int s_accel = 0;
607 s_decc += s_spdc / 10;
609 s_spdc +=
RAND () % 3 -
RAND () % 3;
617 s_spdc = s_spdc -
RAND () % 3 + s_accel / 10;
619 s_spdc = s_spdc +
RAND () % 3 + s_accel / 10;
621 if (s_decc > 8 && s_spdc > 1)
622 s_spdc -=
RAND () % 3 - 2;
624 if (s_decc < -8 && s_spdc < -1)
625 s_spdc +=
RAND () % 3 + 2;
627 if (s_decc > 8 || s_decc < -8)
628 s_decc = s_decc * 8 / 9;
631 s_accel +=
RAND () % 2 -
RAND () % 2;
640 s_interlaceStart = 0;
643 if (s_interlaceStart==-1) {
648 for (
Uint x = 0; x < y; x += 2) {
649 int brutSmypos =
brutS[x];
667 s_interlaceStart = -2;
670 if (s_interlaceStart>=0) {
671 int maxEnd = (s_interlaceStart+INTERLACE_INCR);
682 brutT[premul_y_prevX] = px;
683 brutT[premul_y_prevX + 1] = py;
687 s_interlaceStart += INTERLACE_INCR;
688 if (y >=
prevY-1) s_interlaceStart = -1;
691 if (switchIncr != 0) {
697 if (switchMult != 1.0F) {
733 if ((x > 1) && (y > 1) && (x <
resolx - 2) && (y <
c_resoly - 2)) {