Пример #1
0
int SendData(int dsize,unsigned char *dptr)
{
   int retval;

   if (UDPEnable){
/*      retval = sendto(ugamesocket,dptr,dsize,0,(struct sockaddr *)&ugameaddress,sizeof(ugameaddress));
      if (retval == SOCKET_ERROR)
           {
         closesocket(gamesocket);
         return(-1);
           }
      return(0);  */

     if (((packetnum-packetnumhead) & 0xFF) >= 15){
//        sprintf(message1,"Packet Overflow.");
//        MessageBox (NULL, message1, "Init Error" , MB_ICONERROR );

        // wait for receive packet, call JoyRead while waiting
        while (((packetnum-packetnumhead) & 0xFF) >= 15){
           PacketResend();
           PacketReceive();
           UpdateVFrame();
           while ((packetconfirm[packetnumhead]) && (packetnum!=packetnumhead))
             packetnumhead=(packetnumhead+1) & 0xFF;
        }
     }
     CopyMemory(&(cpacketdata[2]),dptr,dsize);
     CopyMemory(&(packetdata[2048*(packetnum & 0x0F)]),dptr,dsize);
     packetsize[packetnum]=dsize;
     packetconfirm[packetnum]=0;
     cpacketdata[0]=1;
     cpacketdata[1]=(char)packetnum;
     retval = sendto(ugamesocket,cpacketdata,dsize+2,0,(struct sockaddr *)&ugameaddress,sizeof(ugameaddress));
     packettimeleft[packetnum]=60;
     if (dsize>512) packettimeleft[packetnum]=90;
     packetresent[packetnum]=1;
     packetnum=(packetnum+1) & 0xFF;
     if (retval == SOCKET_ERROR)
          {
        closesocket(ugamesocket);
        return(-1);
          }
     return(0);
   }

   /* send data with the socket */
   retval = send(gamesocket,dptr,dsize,0);
   if (retval == SOCKET_ERROR)
	{
      closesocket(gamesocket);
      return(-1);
	}
   return(0);
}
Пример #2
0
void UDPWait1Sec(){
  CounterB=60;
  while (CounterB>0)
    UpdateVFrame();
}
Пример #3
0
void gl_drawwin()
{
	int i;

	NGNoTransp = 0;		// Set this value to 1 within the appropriate
				// video mode if you want to add a custom
				// transparency routine or hardware
				// transparency.  This only works if
				// the value of newengen is equal to 1.
				// (see ProcessTransparencies in newgfx16.asm
				//  for ZSNES' current transparency code)
	UpdateVFrame();
	if (curblank != 0)
		return;

	if (BilinearFilter)
	{
		glfilters = GL_LINEAR;
		if (GUIOn2 && !FilteredGUI)
			glfilters = GL_NEAREST;
	}
	else
	{
		glfilters = GL_NEAREST;
	}

	if (En2xSaI && SurfaceX != 256)
	{
		/* We have to use copy640x480x16bwin for 2xSaI */
		AddEndBytes = 0;
		NumBytesPerLine = 1024;
		WinVidMemStart = (void *) glvidbuffer;
		copy640x480x16bwin();

		/* Display 4 256x256 quads for the 512x448 buffer */
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, glfilters);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, glfilters);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);

		/* Upper left quad */
		glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
		glPixelStorei(GL_UNPACK_ROW_LENGTH, 512);
		glTexImage2D(GL_TEXTURE_2D, 0, 3, 256, 256, 0,
			     GL_RGB, GL_UNSIGNED_SHORT_5_6_5, glvidbuffer);

		glBegin(GL_QUADS);
			glTexCoord2f(0.0f, 0.0f);
			glVertex3f(-1.0f, 1.0f, -1.0f);
			glTexCoord2f(1.0f, 0.0f);
			glVertex3f(0.0f, 1.0f, -1.0f);
			glTexCoord2f(1.0f, (224.0 / 256.0));
			glVertex3f(0.0f, 0.0f, -1.0f);
			glTexCoord2f(0.0f, (224.0 / 256.0));
			glVertex3f(-1.0f, 0.0f, -1.0f);
		glEnd();

		/* Upper right quad */
		glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
		glPixelStorei(GL_UNPACK_ROW_LENGTH, 512);
		glTexImage2D(GL_TEXTURE_2D, 0, 3, 256, 256, 0,
			     GL_RGB, GL_UNSIGNED_SHORT_5_6_5,
			     glvidbuffer + 256);

		glBegin(GL_QUADS);
			glTexCoord2f(0.0f, 0.0f);
			glVertex3f(0.0f, 1.0f, -1.0f);
			glTexCoord2f(1.0f, 0.0f);
			glVertex3f(1.0f, 1.0f, -1.0f);
			glTexCoord2f(1.0f, (224.0 / 256.0));
			glVertex3f(1.0f, 0.0f, -1.0f);
			glTexCoord2f(0.0f, (224.0 / 256.0));
			glVertex3f(0.0f, 0.0f, -1.0f);
		glEnd();

		/* Lower left quad */
		glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
		glPixelStorei(GL_UNPACK_ROW_LENGTH, 512);
		glTexImage2D(GL_TEXTURE_2D, 0, 3, 256, 256, 0,
			     GL_RGB, GL_UNSIGNED_SHORT_5_6_5,
			     glvidbuffer + 512 * 224);

		glBegin(GL_QUADS);
			glTexCoord2f(0.0f, 0.0f);
			glVertex3f(-1.0f, 0.0f, -1.0f);
			glTexCoord2f(1.0f, 0.0f);
			glVertex3f(0.0f, 0.0f, -1.0f);
			glTexCoord2f(1.0f, (224.0 / 256.0));
			glVertex3f(0.0f, -1.0f, -1.0f);
			glTexCoord2f(0.0f, (224.0 / 256.0));
			glVertex3f(-1.0f, -1.0f, -1.0f);
		glEnd();

		/* Lower right quad */
		glTexImage2D(GL_TEXTURE_2D, 0, 3, 256, 256, 0,
			     GL_RGB, GL_UNSIGNED_SHORT_5_6_5,
			     glvidbuffer + 512 * 224 + 256);

		glBegin(GL_QUADS);
			glTexCoord2f(0.0f, 0.0f);
			glVertex3f(0.0f, 0.0f, -1.0f);
			glTexCoord2f(1.0f, 0.0f);
			glVertex3f(1.0f, 0.0f, -1.0f);
			glTexCoord2f(1.0f, (224.0 / 256.0));
			glVertex3f(1.0f, -1.0f, -1.0f);
			glTexCoord2f(0.0f, (224.0 / 256.0));
			glVertex3f(0.0f, -1.0f, -1.0f);
		glEnd();
	}
	else
	{
		/*
		 * This code splits the hires/lores portions up, and draws
		 * them with gl_drawspan
		 */
		int lasthires, lasthires_line = 0;

		gltexture256 = gltexture512 = 0;

		lasthires = SpecialLine[1];
		for (i = 1; i < 222; i++)
		{
			if (SpecialLine[i + 1])
			{
				if (lasthires)
					continue;
				gl_drawspan(lasthires, lasthires_line, i);

				lasthires = SpecialLine[i + 1];
				lasthires_line = i;
			}
			else
			{
				if (!lasthires)
					continue;
				gl_drawspan(lasthires, lasthires_line, i);

				lasthires = SpecialLine[i + 1];
				lasthires_line = i;
			}
		}
		gl_drawspan(lasthires, lasthires_line, i);

		/*
		 * This is here rather than right outside this if because the
		 * GUI doesn't allow scanlines to be selected while filters are
		 * on.. There is no technical reason they can't be on while
		 * filters are on, however.  Feel free to change the GUI, and
		 * move this outside the if (En2xSaI) {}, if you do.
		 */
		if (scanlines)
		{
			glDisable(GL_TEXTURE_2D);
			glEnable(GL_BLEND);

			glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
			glBindTexture(GL_TEXTURE_1D, gltextures[3]);
			glColor4f(1.0f, 1.0f, 1.0f,
				  scanlines == 1 ? 1.0f : (scanlines ==
							   2 ? 0.25f : 0.50f));
			for (i = 0; i < SurfaceY; i += 256)
			{
				glBegin(GL_QUADS);
				glTexCoord1f(0.0f);
				glVertex3f(-1.0f, (SurfaceY - i * 2.0) / SurfaceY, -1.0f);
				glTexCoord1f(0.0f);
				glVertex3f(1.0f, (SurfaceY - i * 2.0) / SurfaceY, -1.0f);
				glTexCoord1f(1.0f);
				glVertex3f(1.0f, (SurfaceY - (i + 256) * 2.0) / SurfaceY, -1.0f);
				glTexCoord1f(1.0f);
				glVertex3f(-1.0f, (SurfaceY - (i + 256) * 2.0) / SurfaceY, -1.0f);
				glEnd();
			}

			glDisable(GL_BLEND);
			glEnable(GL_TEXTURE_2D);
		}
	}
	SDL_GL_SwapBuffers();
}