diff options
| author | Xavier Del Campo Romero <xavi92@disroot.org> | 2025-11-16 00:36:51 +0100 |
|---|---|---|
| committer | Xavier Del Campo Romero <xavi92@disroot.org> | 2025-11-16 00:36:51 +0100 |
| commit | 788fb20656c8450a3f2da8b3f8b1905242103193 (patch) | |
| tree | ae6e1a2c9e7da0fe72b070d2db580adf26e410af /libpcsxcore | |
| parent | 8349bf45e9b19d83506e1bb52f2053a7976922e5 (diff) | |
WIP TCP/SIOsio
Diffstat (limited to 'libpcsxcore')
| -rw-r--r-- | libpcsxcore/psxhw.c | 32 | ||||
| -rw-r--r-- | libpcsxcore/socket.c | 3 |
2 files changed, 22 insertions, 13 deletions
diff --git a/libpcsxcore/psxhw.c b/libpcsxcore/psxhw.c index 58a2ba65..fd710d03 100644 --- a/libpcsxcore/psxhw.c +++ b/libpcsxcore/psxhw.c @@ -50,7 +50,7 @@ u8 psxHwRead8(u32 add) { unsigned char hard; switch (add) { - case 0x1f801040: hard = sioRead8(); break; + case 0x1f801040: hard = sioRead8(); break; #ifdef ENABLE_SIO1API case 0x1f801050: hard = SIO1_readData8(); break; #endif @@ -58,8 +58,12 @@ u8 psxHwRead8(u32 add) { case 0x1f801801: hard = cdrRead1(); break; case 0x1f801802: hard = cdrRead2(); break; case 0x1f801803: hard = cdrRead3(); break; + case 0x1f801054: hard = SIO1_readStat32(); break; + case 0x1f801055: hard = SIO1_readStat32() >> 8; break; + case 0x1f801056: hard = SIO1_readStat32() >> 16; break; + case 0x1f801057: hard = SIO1_readStat32() >> 24; break; default: - hard = psxHu8(add); + hard = psxHu8(add); #ifdef PSXHW_LOG PSXHW_LOG("*Unkwnown 8bit read at address %x\n", add); #endif @@ -77,12 +81,12 @@ u16 psxHwRead16(u32 add) { switch (add) { #ifdef PSXHW_LOG - case 0x1f801070: + case 0x1f801070: PSXHW_LOG("IREG 16bit read %x\n", psxHu16(0x1070)); return psxHu16(0x1070); #endif #ifdef PSXHW_LOG - case 0x1f801074: + case 0x1f801074: PSXHW_LOG("IMASK 16bit read %x\n", psxHu16(0x1074)); return psxHu16(0x1074); #endif @@ -212,14 +216,14 @@ u16 psxHwRead16(u32 add) { if (add >= 0x1f801c00 && add < 0x1f801e00) { hard = SPU_readRegister(add); } else { - hard = psxHu16(add); + hard = psxHu16(add); #ifdef PSXHW_LOG PSXHW_LOG("*Unkwnown 16bit read at address %x\n", add); #endif } return hard; } - + #ifdef PSXHW_LOG PSXHW_LOG("*Known 16bit read at address %x value %x\n", add, hard); #endif @@ -246,6 +250,10 @@ u32 psxHwRead32(u32 add) { SIO1_LOG("sio1 read32 ;ret = %x\n", hard); #endif return hard; + case 0x1f801054: hard = SIO1_readStat32(); break; + case 0x1f801058: hard = SIO1_readMode32(); break; + case 0x1f80105a: hard = SIO1_readCtrl32(); break; + case 0x1f80105e: hard = SIO1_readBaud32(); break; #endif #ifdef PSXHW_LOG case 0x1f801060: @@ -253,12 +261,12 @@ u32 psxHwRead32(u32 add) { return psxHu32(0x1060); #endif #ifdef PSXHW_LOG - case 0x1f801070: + case 0x1f801070: PSXHW_LOG("IREG 32bit read %x\n", psxHu32(0x1070)); return psxHu32(0x1070); #endif #ifdef PSXHW_LOG - case 0x1f801074: + case 0x1f801074: PSXHW_LOG("IMASK 32bit read %x\n", psxHu32(0x1074)); return psxHu32(0x1074); #endif @@ -375,7 +383,7 @@ u32 psxHwRead32(u32 add) { return hard; default: - hard = psxHu32(add); + hard = psxHu32(add); #ifdef PSXHW_LOG PSXHW_LOG("*Unknown 32bit read at address %x (0x%8.8lx)\n", add, hard); #endif @@ -476,7 +484,7 @@ void psxHwWrite16(u32 add, u16 value) { #endif return; #endif - case 0x1f801070: + case 0x1f801070: #ifdef PSXHW_LOG PSXHW_LOG("IREG 16bit write %x\n", value); #endif @@ -592,7 +600,7 @@ void psxHwWrite32(u32 add, u32 value) { return; // Ram size #endif - case 0x1f801070: + case 0x1f801070: #ifdef PSXHW_LOG PSXHW_LOG("IREG 32bit write %x\n", value); #endif @@ -677,7 +685,7 @@ void psxHwWrite32(u32 add, u32 value) { PSXHW_LOG("DMA3 CHCR 32bit write %x\n", value); #endif DmaExec(3); // DMA3 chcr (CDROM DMA) - + return; #ifdef PSXHW_LOG diff --git a/libpcsxcore/socket.c b/libpcsxcore/socket.c index 77ed7a49..f706eb0d 100644 --- a/libpcsxcore/socket.c +++ b/libpcsxcore/socket.c @@ -35,7 +35,7 @@ int StartServer(unsigned short port) { struct in_addr localhostaddr; struct sockaddr_in localsocketaddr; - int ret; + int ret, value = 1; #ifdef _WIN32 WSADATA wsaData; @@ -54,6 +54,7 @@ int StartServer(unsigned short port) { return ret; #endif + setsockopt(ret, SOL_SOCKET, SO_REUSEADDR, &value, sizeof value); SetsNonblock(ret); memset((void *)&localhostaddr, 0, sizeof(localhostaddr)); |
