Removed 'int' from most of networking code

moved -Werror over to 'STRICT'
This commit is contained in:
MysterD 2020-09-04 11:43:12 -07:00
parent 9512fde4a5
commit 1289f863ca
14 changed files with 45 additions and 38 deletions

View file

@ -3952,6 +3952,7 @@
<ClCompile Include="..\src\pc\network\packets\packet_collect_coin.c" /> <ClCompile Include="..\src\pc\network\packets\packet_collect_coin.c" />
<ClCompile Include="..\src\pc\network\packets\packet_collect_item.c" /> <ClCompile Include="..\src\pc\network\packets\packet_collect_item.c" />
<ClCompile Include="..\src\pc\network\packets\packet_collect_star.c" /> <ClCompile Include="..\src\pc\network\packets\packet_collect_star.c" />
<ClCompile Include="..\src\pc\network\packets\packet_custom.c" />
<ClCompile Include="..\src\pc\network\packets\packet_inside_painting.c" /> <ClCompile Include="..\src\pc\network\packets\packet_inside_painting.c" />
<ClCompile Include="..\src\pc\network\packets\packet_level_warp.c" /> <ClCompile Include="..\src\pc\network\packets\packet_level_warp.c" />
<ClCompile Include="..\src\pc\network\packets\packet_object.c" /> <ClCompile Include="..\src\pc\network\packets\packet_object.c" />

View file

@ -15006,6 +15006,9 @@
<ClCompile Include="..\src\pc\network\packets\packet_reservation.c"> <ClCompile Include="..\src\pc\network\packets\packet_reservation.c">
<Filter>Source Files\src\pc\network\packets</Filter> <Filter>Source Files\src\pc\network\packets</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\src\pc\network\packets\packet_custom.c">
<Filter>Source Files\src\pc\network\packets</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\actors\common0.h"> <ClCompile Include="..\actors\common0.h">

View file

@ -1 +1 @@
make BETTERCAMERA=1 NODRAWINGDISTANCE=1 DEBUG=1 IMMEDIATELOAD=1 && winpty cgdb ./build/us_pc/sm64.us.f3dex2e.exe -ex 'break debug_breakpoint_here' -ex 'run' -ex 'quit' make BETTERCAMERA=1 NODRAWINGDISTANCE=1 DEBUG=1 IMMEDIATELOAD=1 STRICT=1 && winpty cgdb ./build/us_pc/sm64.us.f3dex2e.exe -ex 'break debug_breakpoint_here' -ex 'run' -ex 'quit'

View file

@ -1 +1 @@
make BETTERCAMERA=1 NODRAWINGDISTANCE=1 DEBUG=1 IMMEDIATELOAD=1 && winpty cgdb ./build/us_pc/sm64.us.f3dex2e.exe -ex 'break debug_breakpoint_here' make BETTERCAMERA=1 NODRAWINGDISTANCE=1 DEBUG=1 IMMEDIATELOAD=1 STRICT=1 && winpty cgdb ./build/us_pc/sm64.us.f3dex2e.exe -ex 'break debug_breakpoint_here'

View file

@ -1,5 +1,9 @@
set -e set -e
if [ $# -eq 0 ]; then
make BETTERCAMERA=1 NODRAWINGDISTANCE=1 DEBUG=1 IMMEDIATELOAD=1 make BETTERCAMERA=1 NODRAWINGDISTANCE=1 DEBUG=1 IMMEDIATELOAD=1
else
make BETTERCAMERA=1 NODRAWINGDISTANCE=1 DEBUG=1 IMMEDIATELOAD=1 STRICT=1
fi
# find file # find file
FILE=./build/us_pc/sm64.us.f3dex2e.exe FILE=./build/us_pc/sm64.us.f3dex2e.exe

View file

@ -1,6 +1,7 @@
#ifndef NETWORK_H #ifndef NETWORK_H
#define NETWORK_H #define NETWORK_H
#include "PR/ultratypes.h"
#include <time.h> #include <time.h>
#include <types.h> #include <types.h>
#include <assert.h> #include <assert.h>
@ -32,13 +33,13 @@ enum PacketType {
}; };
struct Packet { struct Packet {
int dataLength; u16 dataLength;
int cursor; u16 cursor;
bool error; bool error;
bool reliable; bool reliable;
u16 seqId; u16 seqId;
bool sent; bool sent;
char buffer[PACKET_LENGTH]; u8 buffer[PACKET_LENGTH];
}; };
struct SyncObject { struct SyncObject {
@ -80,8 +81,8 @@ void network_shutdown(void);
// packet read / write // packet read / write
void packet_init(struct Packet* packet, enum PacketType packetType, bool reliable); void packet_init(struct Packet* packet, enum PacketType packetType, bool reliable);
void packet_write(struct Packet* packet, void* data, int length); void packet_write(struct Packet* packet, void* data, u16 length);
void packet_read(struct Packet* packet, void* data, int length); void packet_read(struct Packet* packet, void* data, u16 length);
u32 packet_hash(struct Packet* packet); u32 packet_hash(struct Packet* packet);
bool packet_check_hash(struct Packet* packet); bool packet_check_hash(struct Packet* packet);

View file

@ -82,7 +82,7 @@ void network_receive_collect_coin(struct Packet* p) {
const void* behavior = get_behavior_from_id(behaviorId); const void* behavior = get_behavior_from_id(behaviorId);
// check if remote coin id has already been seen // check if remote coin id has already been seen
for (int i = 0; i < MAX_REMOTE_COIN_IDS; i++) { for (u16 i = 0; i < MAX_REMOTE_COIN_IDS; i++) {
if (remoteCoinIds[i] == remoteCoinId) { if (remoteCoinIds[i] == remoteCoinId) {
// we already saw this coin! // we already saw this coin!
goto SANITY_CHECK_COINS; goto SANITY_CHECK_COINS;

View file

@ -73,7 +73,7 @@ void network_receive_collect_item(struct Packet* p) {
const void* behavior = get_behavior_from_id(behaviorId); const void* behavior = get_behavior_from_id(behaviorId);
// check if remote item id has already been seen // check if remote item id has already been seen
for (int i = 0; i < MAX_REMOTE_ITEM_IDS; i++) { for (u16 i = 0; i < MAX_REMOTE_ITEM_IDS; i++) {
if (remoteItemIds[i] == remoteItemId) { if (remoteItemIds[i] == remoteItemId) {
// we already saw this item! // we already saw this item!
return; return;

View file

@ -24,7 +24,7 @@ float player_distance(struct MarioState* marioState, struct Object* o) {
} }
void network_clear_sync_objects(void) { void network_clear_sync_objects(void) {
for (int i = 0; i < MAX_SYNC_OBJECTS; i++) { for (u16 i = 0; i < MAX_SYNC_OBJECTS; i++) {
network_forget_sync_object(&syncObjects[i]); network_forget_sync_object(&syncObjects[i]);
} }
nextSyncID = 1; nextSyncID = 1;
@ -36,7 +36,7 @@ void network_set_sync_id(struct Object* o) {
// two-player hack // two-player hack
u8 reserveId = (networkLevelLoaded && networkType == NT_CLIENT) ? 1 : 0; u8 reserveId = (networkLevelLoaded && networkType == NT_CLIENT) ? 1 : 0;
for (int i = 0; i < MAX_SYNC_OBJECTS; i++) { for (u16 i = 0; i < MAX_SYNC_OBJECTS; i++) {
if (syncObjects[nextSyncID].reserved == reserveId && syncObjects[nextSyncID].o == NULL) { break; } if (syncObjects[nextSyncID].reserved == reserveId && syncObjects[nextSyncID].o == NULL) { break; }
nextSyncID = (nextSyncID + 1) % MAX_SYNC_OBJECTS; nextSyncID = (nextSyncID + 1) % MAX_SYNC_OBJECTS;
} }
@ -78,7 +78,7 @@ void network_init_object_field(struct Object *o, void* field) {
assert(o->oSyncID != 0); assert(o->oSyncID != 0);
// remember to synchronize this extra field // remember to synchronize this extra field
struct SyncObject* so = &syncObjects[o->oSyncID]; struct SyncObject* so = &syncObjects[o->oSyncID];
int index = so->extraFieldCount++; u8 index = so->extraFieldCount++;
so->extraFields[index] = field; so->extraFields[index] = field;
} }
@ -234,7 +234,7 @@ static void packet_write_object_extra_fields(struct Packet* p, struct Object* o)
packet_write(p, &so->extraFieldCount, sizeof(u8)); packet_write(p, &so->extraFieldCount, sizeof(u8));
// write the extra field // write the extra field
for (int i = 0; i < so->extraFieldCount; i++) { for (u8 i = 0; i < so->extraFieldCount; i++) {
assert(so->extraFields[i] != NULL); assert(so->extraFields[i] != NULL);
packet_write(p, so->extraFields[i], sizeof(u32)); packet_write(p, so->extraFields[i], sizeof(u32));
} }
@ -252,7 +252,7 @@ static void packet_read_object_extra_fields(struct Packet* p, struct Object* o)
} }
// read the extra fields // read the extra fields
for (int i = 0; i < extraFieldsCount; i++) { for (u8 i = 0; i < extraFieldsCount; i++) {
assert(so->extraFields[i] != NULL); assert(so->extraFields[i] != NULL);
packet_read(p, so->extraFields[i], sizeof(u32)); packet_read(p, so->extraFields[i], sizeof(u32));
} }

View file

@ -17,24 +17,24 @@ void packet_init(struct Packet* packet, enum PacketType packetType, bool reliabl
packet->sent = false; packet->sent = false;
} }
void packet_write(struct Packet* packet, void* data, int length) { void packet_write(struct Packet* packet, void* data, u16 length) {
if (data == NULL) { packet->error = true; return; } if (data == NULL) { packet->error = true; return; }
memcpy(&packet->buffer[packet->cursor], data, length); memcpy(&packet->buffer[packet->cursor], data, length);
packet->dataLength += length; packet->dataLength += length;
packet->cursor += length; packet->cursor += length;
} }
void packet_read(struct Packet* packet, void* data, int length) { void packet_read(struct Packet* packet, void* data, u16 length) {
if (data == NULL) { packet->error = true; return; } if (data == NULL) { packet->error = true; return; }
int cursor = packet->cursor; u16 cursor = packet->cursor;
memcpy(data, &packet->buffer[cursor], length); memcpy(data, &packet->buffer[cursor], length);
packet->cursor = cursor + length; packet->cursor = cursor + length;
} }
u32 packet_hash(struct Packet* packet) { u32 packet_hash(struct Packet* packet) {
u32 hash = 0; u32 hash = 0;
int byte = 0; u16 byte = 0;
for (int i = 0; i < packet->dataLength; i++) { for (u16 i = 0; i < packet->dataLength; i++) {
hash ^= ((u32)packet->buffer[i]) << (8 * byte); hash ^= ((u32)packet->buffer[i]) << (8 * byte);
byte = (byte + 1) % sizeof(u32); byte = (byte + 1) % sizeof(u32);
} }

View file

@ -24,12 +24,12 @@ void network_receive_reservation_request(UNUSED struct Packet* p) {
void network_send_reservation(void) { void network_send_reservation(void) {
assert(networkType == NT_SERVER); assert(networkType == NT_SERVER);
int clientPlayerIndex = 1; // two-player hack u8 clientPlayerIndex = 1; // two-player hack
// find all reserved objects // find all reserved objects
u8 reservedObjs[RESERVATION_COUNT] = { 0 }; u8 reservedObjs[RESERVATION_COUNT] = { 0 };
int reservedIndex = 0; u16 reservedIndex = 0;
for (int i = 1; i < MAX_SYNC_OBJECTS; i++) { for (u16 i = 1; i < MAX_SYNC_OBJECTS; i++) {
if (syncObjects[i].reserved == clientPlayerIndex) { if (syncObjects[i].reserved == clientPlayerIndex) {
reservedObjs[reservedIndex++] = i; reservedObjs[reservedIndex++] = i;
if (reservedIndex >= RESERVATION_COUNT) { break; } if (reservedIndex >= RESERVATION_COUNT) { break; }
@ -38,7 +38,7 @@ void network_send_reservation(void) {
if (reservedIndex < RESERVATION_COUNT) { if (reservedIndex < RESERVATION_COUNT) {
// reserve the rest // reserve the rest
for (int i = MAX_SYNC_OBJECTS - 1; i > 0; i--) { for (u16 i = MAX_SYNC_OBJECTS - 1; i > 0; i--) {
if (syncObjects[i].o != NULL) { continue; } if (syncObjects[i].o != NULL) { continue; }
if (syncObjects[i].reserved != 0) { continue; } if (syncObjects[i].reserved != 0) { continue; }
syncObjects[i].reserved = clientPlayerIndex; syncObjects[i].reserved = clientPlayerIndex;
@ -55,18 +55,16 @@ void network_send_reservation(void) {
void network_receive_reservation(struct Packet* p) { void network_receive_reservation(struct Packet* p) {
assert(networkType == NT_CLIENT); assert(networkType == NT_CLIENT);
int clientPlayerIndex = 1; // two-player hack u8 clientPlayerIndex = 1; // two-player hack
// find all reserved objects // find all reserved objects
u8 reservedObjs[RESERVATION_COUNT] = { 0 }; u8 reservedObjs[RESERVATION_COUNT] = { 0 };
packet_read(p, reservedObjs, sizeof(u8) * RESERVATION_COUNT); packet_read(p, reservedObjs, sizeof(u8) * RESERVATION_COUNT);
for (int i = 0; i < RESERVATION_COUNT; i++) { for (u16 i = 0; i < RESERVATION_COUNT; i++) {
int index = reservedObjs[i]; u16 index = reservedObjs[i];
printf(" %d", index);
if (index == 0) { continue; } if (index == 0) { continue; }
if (syncObjects[index].o != NULL) { continue; } if (syncObjects[index].o != NULL) { continue; }
syncObjects[index].reserved = clientPlayerIndex; syncObjects[index].reserved = clientPlayerIndex;
} }
printf("\n");
} }

View file

@ -35,7 +35,7 @@ static u8 generate_parent_id(struct Object* objects[], u8 onIndex) {
return (u8)o->parentObj->oSyncID; return (u8)o->parentObj->oSyncID;
} }
for (u8 i = onIndex; i < onIndex; i--) { for (u8 i = onIndex; i != (u8)-1; i--) {
if (o->parentObj == objects[i]) { return i; } if (o->parentObj == objects[i]) { return i; }
} }
@ -76,7 +76,7 @@ void network_receive_spawn_objects(struct Packet* p) {
packet_read(p, &objectCount, sizeof(u8)); packet_read(p, &objectCount, sizeof(u8));
// check if remote spawn id has already been seen // check if remote spawn id has already been seen
for (int i = 0; i < MAX_REMOTE_SPAWN_IDS; i++) { for (u16 i = 0; i < MAX_REMOTE_SPAWN_IDS; i++) {
if (remoteSpawnIds[i] == remoteSpawnId) { if (remoteSpawnIds[i] == remoteSpawnId) {
// we already saw this event! // we already saw this event!
return; return;

View file

@ -1,6 +1,6 @@
#include <stdio.h> #include <stdio.h>
#include "socket.h"
#include "../network.h" #include "../network.h"
#include "socket.h"
int socket_bind(SOCKET sock, unsigned int port) { int socket_bind(SOCKET sock, unsigned int port) {
struct sockaddr_in rxAddr; struct sockaddr_in rxAddr;
@ -16,9 +16,9 @@ int socket_bind(SOCKET sock, unsigned int port) {
return rc; return rc;
} }
int socket_send(SOCKET sock, struct sockaddr_in* txAddr, char* buffer, int bufferLength) { int socket_send(SOCKET sock, struct sockaddr_in* txAddr, u8* buffer, u16 bufferLength) {
int txAddrSize = sizeof(struct sockaddr_in); int txAddrSize = sizeof(struct sockaddr_in);
int rc = sendto(sock, buffer, bufferLength, 0, (struct sockaddr*)txAddr, txAddrSize); int rc = sendto(sock, (char*)buffer, bufferLength, 0, (struct sockaddr*)txAddr, txAddrSize);
if (rc == SOCKET_ERROR) { if (rc == SOCKET_ERROR) {
printf("%s sendto failed with error: %d\n", NETWORKTYPESTR, SOCKET_LAST_ERROR); printf("%s sendto failed with error: %d\n", NETWORKTYPESTR, SOCKET_LAST_ERROR);
} }
@ -26,11 +26,11 @@ int socket_send(SOCKET sock, struct sockaddr_in* txAddr, char* buffer, int buffe
return rc; return rc;
} }
int socket_receive(SOCKET sock, struct sockaddr_in* rxAddr, char* buffer, int bufferLength, int* receiveLength) { int socket_receive(SOCKET sock, struct sockaddr_in* rxAddr, u8* buffer, u16 bufferLength, u16* receiveLength) {
*receiveLength = 0; *receiveLength = 0;
int rxAddrSize = sizeof(struct sockaddr_in); int rxAddrSize = sizeof(struct sockaddr_in);
int rc = recvfrom(sock, buffer, bufferLength, 0, (struct sockaddr*)rxAddr, &rxAddrSize); int rc = recvfrom(sock, (char*)buffer, bufferLength, 0, (struct sockaddr*)rxAddr, &rxAddrSize);
if (rc == SOCKET_ERROR) { if (rc == SOCKET_ERROR) {
int error = SOCKET_LAST_ERROR; int error = SOCKET_LAST_ERROR;
if (error != SOCKET_EWOULDBLOCK && error != SOCKET_ECONNRESET) { if (error != SOCKET_EWOULDBLOCK && error != SOCKET_ECONNRESET) {

View file

@ -9,8 +9,8 @@
SOCKET socket_initialize(void); SOCKET socket_initialize(void);
int socket_bind(SOCKET sock, unsigned int port); int socket_bind(SOCKET sock, unsigned int port);
int socket_send(SOCKET sock, struct sockaddr_in* txAddr, char* buffer, int bufferLength); int socket_send(SOCKET sock, struct sockaddr_in* txAddr, u8* buffer, u16 bufferLength);
int socket_receive(SOCKET sock, struct sockaddr_in* rxAddr, char* buffer, int bufferLength, int* receiveLength); int socket_receive(SOCKET sock, struct sockaddr_in* rxAddr, u8* buffer, u16 bufferLength, u16* receiveLength);
void socket_close(SOCKET sock); void socket_close(SOCKET sock);
#endif #endif