Ejemplo n.º 1
0
static bool8 NPClientGetSRAMFromServer (void)
{
	if (!npclient.online)
		return (false);

	NPNotification("Client: Receiving SRAM from server...", -1);

	if (NPClientGetMesFromServer() != kNPServerSRAMWillSend)
	{
		NPError("Client: Failed to receive messsage from server.", 5501);
		return (false);
	}

	if (NPClientSendMesToServer(kNPClientSRAMWaiting) == false)
	{
		NPError("Client: Failed to send messsage to server.", 5502);
		return (false);
	}

	uint8	mes[4];
	uint32	sramsize;

	if (socket_read(npclient.socket, mes, 4) != 4)
	{
		NPError("Client: Failed to receive SRAM size from server.", 5503);
		return (false);
	}

	sramsize = READ_LONG(mes + 0);

	if (sramsize != (uint32) (Memory.SRAMSize ? (1 << (Memory.SRAMSize + 3)) * 128 : 0))
	{
		NPError("Client: SRAM size mismatch.", 5504);
		return (false);
	}

	if (sramsize && (socket_read(npclient.socket, Memory.SRAM, sramsize) != (int) sramsize))
	{
		NPError("Server: Failed to receive SRAM from server.", 5505);
		return (false);
	}

	if (NPClientSendMesToServer(kNPClientSRAMLoaded) == false)
	{
		NPError("Client: Failed to send messsage to server.", 5506);
		return (false);
	}

	NPNotification("Client: Received SRAM from server.", -1);
	return (true);
}
Ejemplo n.º 2
0
static bool8 NPClientGetPlayerListFromServer (void)
{
	if (!npclient.online)
		return (false);

	NPNotification("Client: Receiving player list from server...", -1);

	if (NPClientGetMesFromServer() != kNPServerPlayerWillSend)
	{
		NPError("Client: Failed to receive messsage from server.", 5701);
		return (false);
	}

	if (NPClientSendMesToServer(kNPClientPlayerWaiting) == false)
	{
		NPError("Client: Failed to send messsage to server.", 5702);
		return (false);
	}

	for (int i = 0; i < NP_MAX_PLAYERS; i++)
	{
		uint8	mes[10];
		uint32	l;

		if (socket_read(npclient.socket, mes, 10) != 10)
		{
			NPError("Client: Failed to receive messsage from server.", 5703);
			return (false);
		}

		npcinfo[i].ready  = READ_BYTE(mes + 1);
		npcinfo[i].player = READ_LONG(mes + 2);

		l = READ_LONG(mes + 6);

		if (l && (socket_read(npclient.socket, (uint8 *) npcinfo[i].name, l) != (int) l))
		{
			NPError("Client: Failed to receive messsage from server.", 5704);
			return (false);
		}

		npcinfo[i].name[l] = 0;
	}

	npclient.numplayers = 0;
	for (int i = 0; i < NP_MAX_PLAYERS; i++)
		if (npcinfo[i].ready)
			npclient.numplayers++;

	NPNotification("Client: Received player list from server.", -1);
	NPNotification("Client: Number of players: %d", npclient.numplayers);

	return (true);
}
Ejemplo n.º 3
0
static bool8 NPClientGetROMInfoFromServer(void)
{
	if (!npclient.online)
		return (false);

	NPNotification("Client: Receiving ROM information from server...", -1);

	if (NPClientGetMesFromServer() != kNPServerROMInfoWillSend)
	{
		NPError("Client: Failed to receive messsage from server.", 5201);
		return (false);
	}

	if (NPClientSendMesToServer(kNPClientROMInfoWaiting) == false)
	{
		NPError("Client: Failed to send messsage to server.", 5202);
		return (false);
	}

	uint8	mes[16];
	uint32	l;

	if (socket_read(npclient.socket, mes, 16) != 16)
	{
		NPError("Client: Failed to receive ROM information from server.", 5203);
		return (false);
	}

	nprominfo.crc32      = READ_LONG(mes + 0);
	nprominfo.input      = READ_LONG(mes + 4);
	//reserved1 = READ_BYTE(mes + 8);
	//reserved2 = READ_BYTE(mes + 9);
	//reserved3 = READ_BYTE(mes + 10);
	//reserved4 = READ_BYTE(mes + 11);

	l = READ_LONG(mes + 12);

	if (socket_read(npclient.socket, (uint8 *) nprominfo.fname, l) != (int) l)
	{
		NPError("Client: Failed to receive ROM name from server.", 5204);
		return (false);
	}

	nprominfo.fname[l] = 0;
	nprominfo.length   = l;

	NPNotification("Client: Received ROM information from server.", -1);
	return (true);
}
Ejemplo n.º 4
0
static bool8 NPClientROMReadyToServer (void)
{
	if (!npclient.online)
		return (false);

	NPNotification("Client: Sending ROM ready sign to server...", -1);

	if (NPClientSendMesToServer(kNPClientROMOpened) == false)
	{
		NPError("Client: Failed to send messsage to server.", 5401);
		return (false);
	}

	NPNotification("Client: Sent ROM ready sign to server.", -1);
	return (true);
}
Ejemplo n.º 5
0
static bool8 NPClientSendNameToServer (void)
{
	if (!npclient.online)
		return (false);

	NPNotification("Client: Sending player name to server...", -1);

	if (NPClientGetMesFromServer() != kNPServerNameRequest)
	{
		NPError("Client: Failed to receive messsage from server.", 5101);
		return (false);
	}

	uint8	mes[4];
	uint32	l;

	l = strlen(npclient.name);
	WRITE_LONG(mes + 0, l);

	if (socket_write(npclient.socket, mes, 4) != 4)
	{
		NPError("Client: Failed to send name size to server.", 5102);
		return (false);
	}

	if (socket_write(npclient.socket, (uint8 *) npclient.name, l) != (int) l)
	{
		NPError("Client: Failed to send name to server.", 5103);
		return (false);
	}

	if (NPClientGetMesFromServer() != kNPServerNameReceived)
	{
		NPError("Client: Failed to receive messsage from server.", 5104);
		return (false);
	}

	if (NPClientSendMesToServer(kNPClientNameSent) == false)
	{
		NPError("Client: Failed to send messsage to server.", 5105);
		return (false);
	}

	NPNotification("Client: Sent player name to server.", -1);
	return (true);
}
Ejemplo n.º 6
0
bool8 NPClientNetPlayWaitStart (void)
{
	NPNotification("Client: Waiting start flag...", -1);

	if (NPClientSendMesToServer(kNPClientStartWait) == false)
	{
		NPError("Client: Failed to send messsage to server.", 5801);
		return (false);
	}

	if (NPClientGetMesFromServer() != kNPServerStart)
	{
		NPError("Client: Failed to send messsage to server.", 5802);
		return (false);
	}

	npclient.phasecount = 0;
	npclient.header     = 0;

	sem_post(csempad);

	NPNotification("Client: Netplay started.", -1);
	return (true);
}