summaryrefslogtreecommitdiff
path: root/libpcsxcore
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi92@disroot.org>2025-11-16 00:36:51 +0100
committerXavier Del Campo Romero <xavi92@disroot.org>2025-11-16 00:36:51 +0100
commit788fb20656c8450a3f2da8b3f8b1905242103193 (patch)
treeae6e1a2c9e7da0fe72b070d2db580adf26e410af /libpcsxcore
parent8349bf45e9b19d83506e1bb52f2053a7976922e5 (diff)
WIP TCP/SIOsio
Diffstat (limited to 'libpcsxcore')
-rw-r--r--libpcsxcore/psxhw.c32
-rw-r--r--libpcsxcore/socket.c3
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));