|
|
|
|
Would you like to get all the new info from
PSX-Scene in your email each day?
Want to learn more about the team keeping you up to date with the latest scene news?
Read about them now! Check out our Developer bios, too! | ||
|
|
It's because the loader is using usb1.1 drivers. To get the speed from 2.0, you need 2.0 drivers. 1. Nobody has usb2.0 drivers for the usb hardware of the ps3 when it's in ps2 mode. And 2. most likely usb2.0 support is shutdown/disabled somehow in ps2 mode*.
It may be possible to get usb2.0 speed there, but there's a big if for it. And then it's pretty much work to write an usb2.0 driver.
*My knowledge about ps2/ps3 is very limited, most likely somebody here has a definative answer for this already.
Probably shut off by the hyper-thing.
Open PS2 loader rev 129
Game: Black
SLUS_213.76
Confirmed working with r122 on SMB and USB as someone else posted in the compatibility lists.
But the game freezes using rev 129
If anyone else who confirmed it working on r122 can try it using r129 too see if they get same results as me.
That's very strange since nothing has changed in core since r122...
But don't be afraid, it seems it's compatible with the next-release core:
http://home.comcast.net/~jnabk2/PSBLD_List.html
About the Mac-related discussion a few pages ago : I know it's not a proper solution but you can run USB Utils without any noticeable problem through Wine...
Ok, I ripped my original Rez copy (PAL) with USBExtreme, my results:
USBAdvance/Open PS2 Loader USBA 0.41: Works fine
OpPS2Load 0.41: Pink screen to white and freezes
OpPS2Load 0.5: Pink screen to yellow to white and freezes
What's wrong?
Last edited by windrider42; 12-13-2009 at 04:45 PM. Reason: updated info
I guess I need to compile the newest revision soon. Hell, I haven't even been able to test the public release yet.![]()
jimmikaelkael don't worry, i will stop nagging you now. Whenever i post something, you can safely assume that's it's not directed at you.
*Udated*
Stupid patch(to slightly speedup network loading):
List of changes to original code:Code:Binary files open-ps2-loaderbackup/.hg/dirstate and open-ps2-loader/.hg/dirstate differ diff -rup open-ps2-loaderbackup/modules/smbman/smb.c open-ps2-loader/modules/smbman/smb.c --- open-ps2-loaderbackup/modules/smbman/smb.c 2009-12-13 18:38:00.000000000 +0100 +++ open-ps2-loader/modules/smbman/smb.c 2009-12-13 18:52:13.000000000 +0100 @@ -66,13 +66,13 @@ int smb_hdrInit(u8 *buf, int bsize) // I if (bsize < SMB_HDR_SIZE) return -1; - memset(buf, SMB_HDR_SIZE, 0); + memset(buf, 0, SMB_HDR_SIZE); for (i = 0; i < 4; i++) buf[i] = smb_hdrSMBmagic[i]; - for (i = 4; i < SMB_HDR_SIZE; i++) - buf[i] = '\0'; + //for (i = 4; i < SMB_HDR_SIZE; i++) + // buf[i] = '\0'; return SMB_HDR_SIZE; } @@ -1294,10 +1294,10 @@ int smb_ReadAndXRequest(u8 *buf, int bsi } //------------------------------------------------------------------------- -int smb_ReadAndXResponse(u8 *buf, int bsize, u8 *readbuf, u16 *nbytes) // analyze Read AndX Response message +int smb_ReadAndXResponse(u8 *buf, int bsize, u8 *readbuf, u16 *nbytes, u32 maxcpycount) // analyze Read AndX Response message { u8 *smb_buf; - int i, offset, data_offset; + int offset, data_offset; // set aside four bytes for the session header bsize -= 4; @@ -1315,25 +1315,41 @@ int smb_ReadAndXResponse(u8 *buf, int bs if (smb_buf[SMB_OFFSET_WORDCOUNT] != 12) return -2; + /* offset = SMB_OFFSET_ANDX_OFFSET; offset += 2; // offset is on Remaining; offset += 2; // offset is on DataCompactionMode offset += 2; // offset is on Reserved; offset += 2; // offset is on DataLength; + */ + offset = SMB_OFFSET_ANDX_OFFSET+8; + *nbytes = smb_GetShort(smb_buf, offset); offset += 2; // offset is on DataOffset; data_offset = smb_GetShort(smb_buf, offset); + /* offset += 2; // offset is on DataLengthHigh; offset += 2; // offset is on Reserved2[4 ushort] offset += 8; // offset is on bytecount offset += 2; // Bytes field - - if (data_offset > 0) { + */ + if (data_offset > 0) + { offset = data_offset; // offset is on data readed - - for (i = 0; i < *nbytes; i++) // Get readed datas - readbuf[i] = smb_buf[offset++]; - } + if (*nbytes < maxcpycount) + { + memcpy(readbuf, &smb_buf[offset], *nbytes); + } else + { + memcpy(readbuf, &smb_buf[offset], maxcpycount); + } + offset += *nbytes; + //for (i = 0; i < *nbytes; i++) // Get readed datas + // readbuf[i] = smb_buf[offset++]; + } else + { + offset += 14; + } // a check to see if all went done if (offset != rawTCP_GetSessionHeader(buf)) Only in open-ps2-loader/modules/smbman: smb.c~ diff -rup open-ps2-loaderbackup/modules/smbman/smb.h open-ps2-loader/modules/smbman/smb.h --- open-ps2-loaderbackup/modules/smbman/smb.h 2009-12-13 18:38:00.000000000 +0100 +++ open-ps2-loader/modules/smbman/smb.h 2009-12-13 18:54:03.000000000 +0100 @@ -454,7 +454,7 @@ int smb_NTCreateAndXRequest(u8 *buf, int int smb_NTCreateAndXResponse(u8 *buf, int bsize, u16 *FID, u32 *filesize); // analyze NT Create AndX Response message int smb_ReadAndXRequest(u8 *buf, int bsize, u16 UID, u16 TID, u16 FID, u32 offset, u16 nbytes); // Builds a Read AndX Request message -int smb_ReadAndXResponse(u8 *buf, int bsize, u8 *readbuf, u16 *nbytes); // analyze Read AndX Response message +int smb_ReadAndXResponse(u8 *buf, int bsize, u8 *readbuf, u16 *nbytes, u32 maxcpycount); // analyze Read AndX Response message int smb_CloseRequest(u8 *buf, int bsize, u16 UID, u16 TID, u16 FID); // Builds a Close Request message int smb_CloseResponse(u8 *buf, int bsize); // analyze Close Response message Only in open-ps2-loader/modules/smbman: smb.h~ diff -rup open-ps2-loaderbackup/modules/smbman/tcp.c open-ps2-loader/modules/smbman/tcp.c --- open-ps2-loaderbackup/modules/smbman/tcp.c 2009-12-13 18:38:00.000000000 +0100 +++ open-ps2-loader/modules/smbman/tcp.c 2009-12-13 19:03:16.000000000 +0100 @@ -495,7 +495,7 @@ int tcp_Open(char *filename, u16 *FID, u } //------------------------------------------------------------------------- -int tcp_Read(u16 FID, void *buf, u32 offset, u16 nbytes) +int tcp_Read(u16 FID, u8 *buf, u32 offset, u16 nbytes) { int size, recv_size, total_packet_size; u16 readbytes; @@ -517,28 +517,30 @@ int tcp_Read(u16 FID, void *buf, u32 off } // Receive the Read AndX Response with a timeout of 10 seconds - size = RecvTimeout(main_socket, SMB_buf, sizeof(SMB_buf), 10000); - if (size <= 0) { + recv_size = RecvTimeout(main_socket, SMB_buf, sizeof(SMB_buf), 10000); + if (recv_size <= 0) { //printf("smbman - tcp_Read: failed to receive Read AndX Response...\n"); return -3; } // Handle fragmented packets total_packet_size = rawTCP_GetSessionHeader(SMB_buf) + 4; - recv_size = size; + u32 data_offset = recv_size - smb_GetShort(SMB_buf, SMB_OFFSET_ANDX_OFFSET+14) -4; + u32 first_offset = data_offset; while (recv_size < total_packet_size) { - size = RecvTimeout(main_socket, &SMB_buf[recv_size], sizeof(SMB_buf) - recv_size, 10000); + size = RecvTimeout(main_socket, &buf[data_offset], sizeof(SMB_buf) - recv_size, 10000); if (size <= 0) { //printf("smbman - tcp_Read: failed to receive Read AndX Response...\n"); return -3; } recv_size += size; + data_offset+= size; } // Validate Read AndX Response - size = smb_ReadAndXResponse(SMB_buf, recv_size, buf, &readbytes); + size = smb_ReadAndXResponse(SMB_buf, recv_size, buf, &readbytes, first_offset); if (size <= 0) { //printf("smbman - tcp_Read: received Invalid Read AndX Response %d\n", size); return -4; Only in open-ps2-loader/modules/smbman: tcp.c~ diff -rup open-ps2-loaderbackup/modules/smbman/tcp.h open-ps2-loader/modules/smbman/tcp.h --- open-ps2-loaderbackup/modules/smbman/tcp.h 2009-12-13 18:38:00.000000000 +0100 +++ open-ps2-loader/modules/smbman/tcp.h 2009-12-13 18:55:05.000000000 +0100 @@ -18,9 +18,9 @@ #include "smb.h" #ifdef LIGHT_MEM -#define MAX_SMB_BUF 3072 // must fit on u16 !!! +#define MAX_SMB_BUF 4096 // must fit on u16 !!! #else -#define MAX_SMB_BUF 15360 // must fit on u16 !!! +#define MAX_SMB_BUF 8192 // must fit on u16 !!! #endif int tcp_ConnectSMBClient(char *SMBServerIP, int SMBServerPort); @@ -29,7 +29,7 @@ int tcp_DisconnectSMBClient(void); //int tcp_GetDir(char *name, int maxent, smb_FindFirst2_Entry *info); //int tcp_EchoSMBServer(u8 *msg, int sz_msg); int tcp_Open(char *filename, u16 *FID, u32 *filesize); -int tcp_Read(u16 FID, void *buf, u32 offset, u16 nbytes); +int tcp_Read(u16 FID, u8 *buf, u32 offset, u16 nbytes); int tcp_Close(u16 FID); #endif Only in open-ps2-loader/modules/smbman: tcp.h~ diff -rup open-ps2-loaderbackup/modules/SMSTCPIP/include/lwipopts.h open-ps2-loader/modules/SMSTCPIP/include/lwipopts.h --- open-ps2-loaderbackup/modules/SMSTCPIP/include/lwipopts.h 2009-12-13 18:38:00.000000000 +0100 +++ open-ps2-loader/modules/SMSTCPIP/include/lwipopts.h 2009-12-13 18:39:16.000000000 +0100 @@ -98,9 +98,9 @@ a lot of data that needs to be copied, t /* TCP receive window. */ #ifdef LIGHT_MEM -#define TCP_WND 8192 +#define TCP_WND 6144 #else -#define TCP_WND 16384 +#define TCP_WND 12288 #endif /* Maximum number of retransmissions of data segments. */ Only in open-ps2-loader: obj Only in open-ps2-loader: stupid.patch
- Replaced a loop that processes all received data with memcpy(->tiny speed up)
- Changed the buffer sizes to 4096 and 8192(->tiny speed up for mode 2, big speed up for regular mode)
- When receiving data, it writes from the 2nd packet per request on directly into the output buffer(->micro speed up for mode 2, tiny speed up for regular mode which is finally faster than mode 2 now)
Sadly i still don't get smooth video playback with this on the game i tested. I only got from ~52 seconds to ~39 seconds from start of a certain video till a certain point.
Last edited by WiiPower; 12-13-2009 at 01:41 PM.
| « Previous Thread | Next Thread » |
| Tags for this Thread |