OPL (Open PS2 Loader)

PS2 Open PS2 Loader v1.1.0

I have moved some of the reset stuff around and I think it works better now.
So now I:
  1. Stop all DMA channels.
  2. Reset the GS.
  3. Reset EE peripherals.
Please try this: https://www.sendspace.com/file/psy9g1
.hack fragment (SLPS) work again with this build!
IGR is amazing now! It even works in all NFS games + MGS3 while looking at large areas!
Also, State of Emergency works in SMB mode, wow!

The only game i had problems was Tom Clancy's Splinter Cell Double Agent, it needs mode 6 or it will crash, its been always like this anyways.

ISOs like Killzone, are properly listed without their IDs on the name through SMB. (Impossible to test on USB 4G limite size)

Some games seens to have IGR disabled internally, like a patch to solve compability, maybe its time to undo this?

Also, while playing from HDD, some games cant detect Network Adaptor even with mode 8 off, if this is a measure to make game compatible, i wonder if it still necessary with all those improvements you made to HDD and Network drivers...?
 
Last edited:
Which problem? i don't noticed any problem in the main menu of the game Metal Arms.

Best regards.
You mean It stutters?
It only happens with some 3rd party MC (not with all) & probably VMC (although I haven't test it).
With genuine MC, everything is fine.

I tested the game without VMC, with a 64mb MC in slot 1. I'll try it with VMC (8mb) or with a sony MC, thank you very much!!
 
Replaced SPU2 reset code with resetspu module. Moved DMA reset code after SSBUS access to SPU2 is enabled.
Enable SPU2 interrupts after resetting the SPU2, to avoid causing a crash when an interrupt is asserted, when CLEARSPU is loaded by the OSDSYS.

As for WHY, I don't know. I just noticed that loading OSDSND (aka rspu2drv, the tentative sound driver) would magically prevent CLEARSPU from crashing and it enables the SPU2 interrupts, which is something that libsd doesn't do (unless you call sceSdInit). It might be that the SPU2 is no longer in a state for asserting an interrupt.
These commits certainly have a lot of magic to them. :eek:

Module hook: set module status to RESIDENT END, REMOVABLE END or FAREWELL END.

Download: https://www.sendspace.com/file/95x8v0
Branch: https://github.com/sp193/Open-PS2-Loader/tree/gamepatch-fix

As in, it was not previously like that? Then in that case, the workaround is the reason, and so we have to choose between keeping the original behaviour and the risk of the game crashing, or poorer performance (at only the logo?) and (probably) stability.

I won't be expanding the Ridge Racer V workaround for SMB and HDD. There's not enough data to say which is better anyway.

.hack fragment (SLPS) work again with this build!
IGR is amazing now! It even works in all NFS games + MGS3 while looking at large areas!

So far, I haven't found a game that won't work with IGR.

The only game i had problems was Tom Clancy's Splinter Cell Double Agent, it needs mode 6 or it will crash, its been always like this anyways.

It works fine on the DTL-T10000. Oh well.

ISOs like Killzone, are properly listed without their IDs on the name through SMB. (Impossible to test on USB 4G limite size)

I see, thanks for the confirmation.

Some games seens to have IGR disabled internally, like a patch to solve compability, maybe its time to undo this?

No, we do not have a game blacklist for IGR.
If the reset combo does not work, then perhaps IGR didn't successfully locate the necessary functions from libpad.

OPL used to not support the early versions of libpad, but that only affected games made up to the earlier part of year 2000.

Also, while playing from HDD, some games cant detect Network Adaptor even with mode 8 off, if this is a measure to make game compatible, i wonder if it still necessary with all those improvements you made to HDD and Network drivers...?

No, mode 8 exists to hide the "dev9" module. For some reason, some games seem to die when they find the dev9 module loaded.

I don't suppose people actually know why we have some games like that, that won't detect the network adaptor.
Maybe it was because the module return value wasn't initialized for hooked modules, like dev9. So you can try the new test ELF to see if it helped.
 
Last edited:

IGR and PO* seems to work with:
Ridge Racer V (SCES_500.00), previously this game have a problem in my config with IGR,
Shadow Man: 2econd Coming (SLES_504.46),
Ultimate Pro Pinball (SLES_535.08).
hurra.gif


IGR and PO* don't work in Tekken 5 (SCES_532.02) & Metal Arms: Glitch in the System (SLES_517.58).
There is no reaction after triggering button combo.

Tested only through HDD (OPNPS2LD-8ee2149.ELF), of course these game also works.

PO* - Power Off.
 
IGR and PO* seems to work with:
Ridge Racer V (SCES_500.00), previously this game have a problem in my config with IGR,
Shadow Man: 2econd Coming (SLES_504.46),
Ultimate Pro Pinball (SLES_535.08).
hurra.gif


IGR and PO* don't work in Tekken 5 (SCES_532.02) & Metal Arms: Glitch in the System (SLES_517.58).
There is no reaction after triggering button combo.

Tested only through HDD (OPNPS2LD-8ee2149.ELF), of course these game also works.

PO* - Power Off.

I wonder if jak and daxter now works with MODE 6 OFF. I'll test it and other games like it that needed MODE 6 ON to just boot.
 
Jak and Daxter: The Precursor Legacy (SCUS-97124) might have anti-cheat protection. Or just some creative use of the memory between 0x00084000 and 0x000C1C00.

After the Sony Computer Entertainment screen, there exists a data load to lower user memory, which is done by the IOP (unrelated parts omitted):
Code:
dsidb S>
 at=000d0000  v0-1=00084000,000d96e0  a0-3=000d96e0,0000c000,00084000,0033d647
 t0-7=0033d647,00000000,00000800,000123e0, f812bb98,00000004,00011ebc,00011f18
 s0-7=000ba628,00000000,00000000,00000000, 00000000,00000000,00000000,00000000
 t8=00000000 t9=00000000  k0=0000b6a4 k1=00000000  gp=000d0680 sp=006e8130
 fp=006e8130 ra=000bb378  lo=0000c000 hi=00000000  PC=000bb394 bada=ffdfffff
 $cr=0x00000024 [ CE0 Breakpoint ]
 $sr=0x00000404 [ IM0 IEp ]
  <DMA_SendToEE+0x34>:
  0x000bb38c: 0x00000000  nop
  0x000bb390: 0x3c01000d  lui  $at,0x000d  # 0x000ccbf4 <cmd+0x04>
->0x000bb394: 0xac22cbf4  sw  $v0,-0x340c($at)
  0x000bb398: 0x8fc2001c  lw  $v0,0x1c($fp)
  0x000bb39c: 0x00000000  nop
  0x000bb3a0: 0x3c01000d  lui  $at,0x000d  # 0x000ccbf8 <cmd+0x08>
  0x000bb3a4: 0xac22cbf8  sw  $v0,-0x3408($at)
dsidb S> bt
 $BT0=0x000bb394 <DMA_SendToEE+0x3c>  $SFA0=0x006e8130 $SFS0=0x00000018
 $BT1=0x000bd544 <CopyDataToEE+0x8c>  $SFA1=0x006e8148 $SFS1=0x00000020
 $BT2=0x000c1584 <ProcessMessageData+0x100>  $SFA2=0x006e8168 $SFS2=0x00000030
 $BT3=0x000bcb74 <ISOThread+0xff4>  $SFA3=0x006e8198 $SFS3=0x00000048
 $BT4=0x0000c464 <Multi_Thread_Manager+0x1234>
dsidb S> dw ($at-0x3410)
 0x000ccbf0: 0x000d96e0 0x00084000  0x0000c000 0x00000000
dsidb S> cont
 at=000d0000  v0-1=00090000,000cd6a0  a0-3=000cd6a0,0000c000,00090000,00340022
 t0-7=00340022,00000000,00000800,00012548, e6a6fcd1,00000006,00011ebc,00011f18
 s0-7=000ba628,00000000,00000000,00000000, 00000000,00000000,00000000,00000000
 t8=00000000 t9=00000000  k0=0000b6a4 k1=00000000  gp=000d0680 sp=006e8130
 fp=006e8130 ra=000bb378  lo=0000c000 hi=00000000  PC=000bb394 bada=ffdfffff
 $cr=0x00000024 [ CE0 Breakpoint ]
 $sr=0x00000404 [ IM0 IEp ]
  <DMA_SendToEE+0x34>:
  0x000bb38c: 0x00000000  nop
  0x000bb390: 0x3c01000d  lui  $at,0x000d  # 0x000ccbf4 <cmd+0x04>
->0x000bb394: 0xac22cbf4  sw  $v0,-0x340c($at)
  0x000bb398: 0x8fc2001c  lw  $v0,0x1c($fp)
  0x000bb39c: 0x00000000  nop
  0x000bb3a0: 0x3c01000d  lui  $at,0x000d  # 0x000ccbf8 <cmd+0x08>
  0x000bb3a4: 0xac22cbf8  sw  $v0,-0x3408($at)
dsidb S> dw ($at-0x3410)
 0x000ccbf0: 0x000cd6a0 0x00090000  0x0000c000 0x00000000
dsidb S> bt
 $BT0=0x000bb3b0 <DMA_SendToEE+0x58>  $SFA0=0x006e8130 $SFS0=0x00000018
 $BT1=0x000bd544 <CopyDataToEE+0x8c>  $SFA1=0x006e8148 $SFS1=0x00000020
 $BT2=0x000c1584 <ProcessMessageData+0x100>  $SFA2=0x006e8168 $SFS2=0x00000030
 $BT3=0x000bcb74 <ISOThread+0xff4>  $SFA3=0x006e8198 $SFS3=0x00000048
 $BT4=0x0000c464 <Multi_Thread_Manager+0x1234>
dsidb S> cont
 at=000d0000  v0-1=0009c000,000d96e0  a0-3=000d96e0,00004800,0009c000,00342a97
 t0-7=00342a97,00000000,00000800,00012278, d4df4bc8,00000007,00011ebc,00011f18
 s0-7=000ba628,00000000,00000000,00000000, 00000000,00000000,00000000,00000000
 t8=00000000 t9=00000000  k0=0000b6a4 k1=00000000  gp=000d0680 sp=006e8130
 fp=006e8130 ra=000bb378  lo=0000c000 hi=00000000  PC=000bb394 bada=ffdfffff
 $cr=0x00000024 [ CE0 Breakpoint ]
 $sr=0x00000404 [ IM0 IEp ]
  <DMA_SendToEE+0x34>:
  0x000bb38c: 0x00000000  nop
  0x000bb390: 0x3c01000d  lui  $at,0x000d  # 0x000ccbf4 <cmd+0x04>
->0x000bb394: 0xac22cbf4  sw  $v0,-0x340c($at)
  0x000bb398: 0x8fc2001c  lw  $v0,0x1c($fp)
  0x000bb39c: 0x00000000  nop
  0x000bb3a0: 0x3c01000d  lui  $at,0x000d  # 0x000ccbf8 <cmd+0x08>
  0x000bb3a4: 0xac22cbf8  sw  $v0,-0x3408($at)

The EE-side appears to use the data:
Code:
dsedb S> sload SCUS_971.24
Loading 1523 symbols ...
dsedb S> dr
 at=80020000  v0-1=00084004,00084004  a0-3=0016f47d,00000000,00b78801,0000006f
 t0-7=00786420,00000000,00000040,a0026100, 2013bcc0,a0000000,00000004,0000001f
 s0-7=0016f470,0017822c,00000000,00786324, 00000000,00149e04,00179284,00149e04
 t8=80025980 t9=0010acd8  k0=70030c13 k1=00000000  gp=0013ec70 sp=0016f400
 fp=0016f400 ra=00109834  lo=000000a0 hi=00000000  sa=00000000 PC=00109884
 badvaddr=00000010 badpaddr=40a45490
 $cause  = 0x00038020 [ CE0 EXC2=Debug IP7 EXC="SYSCALL" ]
 $status  = 0x70030c15 [ Cu210 EDI EIE IM3 IM2 KSU=User ERL IE ]
  <begin__12link_controlPvPciP9kheapinfoUi+0x8c>:
  0x0010987c: 0xae000068  sw  $zero,0x68($s0)
  0x00109880: 0x8e02005c  lw  $v0,0x5c($s0)
->0x00109884: 0x8c430004  lw  $v1,4($v0)
  0x00109888: 0x28620004  slti  $v0,$v1,4
  0x0010988c: 0x1040004c  beq  $v0,$zero,0x001099c0  # <begin__12link_controlPvPciP9kheapinfoUi+0x1d0>
  0x00109890| 0x00000000  nop
  0x00109894: 0x8e02005c  lw  $v0,0x5c($s0)
dsedb S> bt
 $BT0=0x00109884 <begin__12link_controlPvPciP9kheapinfoUi+0x94> $SFA0=0x0016f400 $SFS0=0x00000050
 $BT1=0x0010ad14 <link_and_exec__FPvPciP9kheapinfoUi+0x3c> $SFA1=0x0016f450 $SFS1=0x000000d0
 $BT2=0x00163990 <?>

The function at 0x00163990 is not part of the ELF. It was likely loaded/generated dynamically.

The code that selects the region to use is at 0x00784adc, which is also loaded after the main ELF is loaded:
Code:
*** Unexpected reply - type=BREAKR result=DEBUG_EXCEPTION
*** Target program stopped. Check the location by dr command.
dsedb S> dr
 at=80020000  v0-1=00149e04,00786420  a0-3=00080000,00000009,00b787f8,0017a32c
 t0-7=bf800000,a00260d0,00000040,a0026080, 2013bcc0,a0000000,00000004,0000001f
 s0-7=0017612c,0017822c,00000000,00786324, 00000000,00149e0c,00179284,00149e04
 t8=80025980 t9=0028a42c  k0=70030c13 k1=00000000  gp=00786404 sp=0016f540
 fp=00784a14 ra=00784a4c  lo=00000030 hi=00000000  sa=00000000 PC=00784adc
 badvaddr=00000010 badpaddr=40a45490
 $cause  = 0x00038020 [ CE0 EXC2=Debug IP7 EXC="SYSCALL" ]
 $status  = 0x70030c15 [ Cu210 EDI EIE IM3 IM2 KSU=User ERL IE ]
  0x00784ad4: 0x6783001c  daddiu  $v1,$gp,0x1c
  0x00784ad8: 0x3c040008  lui  $a0,0x0008  # 0x00084000
->0x00784adc: 0x34844000  ori  $a0,$a0,0x4000
  0x00784ae0: 0x3c050003  lui  $a1,0x0003  # 0x0003dc00
  0x00784ae4: 0x34a5dc00  ori  $a1,$a1,0xdc00
  0x00784ae8: 0x8f860000  lw  $a2,0($gp)
  0x00784aec: 0x00a62818  mult  $a1,$a1,$a2

I got this address by dumping EE memory after the EE crashes and using ps2dis to locate references to 0x00084000.

I replaced the pointer with 0x02000000 and the game works without unhooking OPL. Of course, the DTL-T10000 has 128MB of memory, which is why this can be done.

One possible way out, is to redesign OPL to have the EE core movable. But the ELF format is not so flexible.
 
Last edited:
I wonder if jak and daxter now works with MODE 6 OFF. I'll test it and other games like it that needed MODE 6 ON to just boot.

It may boot, but It'll crash after:
jak-dexter.png

Anyway game takes some time to load after this screen, so it is advice to be patient.

Jak and Daxter: The Precursor Legacy (SCUS-97124) might have anti-cheat protection. Or just some creative use of the memory between 0x00084000 and 0x000C1C00...

Thanks for debug test.

BTW: I've notice work on upgrade\migrate to Smbv2 or Smbv3:
https://github.com/ifcaro/Open-PS2-Loader/issues/86#issuecomment-457797946,
https://github.com/ps2dev/ps2sdk/issues/72.
What max version of SMB Windows XP can support?
 
Last edited:
BTW: I've notice work on upgrade\migrate to Smbv2 or Smbv3:
https://github.com/ifcaro/Open-PS2-Loader/issues/86#issuecomment-457797946,
https://github.com/ps2dev/ps2sdk/issues/72.
What max version of SMB Windows XP can support?

It appears to be SMB 1.0.

The only reason why I am more willing to add support for SMB 2.0 now, is because SMB 1.0 was made an optional component in newer versions of Windows. It's making things more complicated for people to use.

We've also long lost the ability to list SMB shares, due to Microsoft disabling the command that we're using.
I'm also thinking that it'll lower the compatibility problems we have. Right now, we've mixing newer commands with some CIFS commands, for simplicity. But somehow it doesn't seem to work right with all devices, not even with all versions of Windows (like Windows Server 2008).

If you must use Windows XP for whatever reason, remember to keep it updated. Microsoft did release a special patch for it, despite the product being EOL'ed.
 
It appears to be SMB 1.0.

The only reason why I am more willing to add support for SMB 2.0 now, is because SMB 1.0 was made an optional component in newer versions of Windows. It's making things more complicated for people to use.

We've also long lost the ability to list SMB shares, due to Microsoft disabling the command that we're using.
I'm also thinking that it'll lower the compatibility problems we have. Right now, we've mixing newer commands with some CIFS commands, for simplicity. But somehow it doesn't seem to work right with all devices, not even with all versions of Windows (like Windows Server 2008).

If you must use Windows XP for whatever reason, remember to keep it updated. Microsoft did release a special patch for it, despite the product being EOL'ed.
Couldn't the fact that newer versions of SMB is a lot less chatty on the network also help with performance?
 
So far, I haven't found a game that won't work with IGR.
Before, NFS frachise and MGS3 got stuck in no signal if you use IGR combo to exit the game.
.hack fragment wasnt working for a few months (black screen), i tested your new version and it worked.


It works fine on the DTL-T10000. Oh well.
Maybe because it have more RAM??? This game also refuses to work in SMB as far I know and needs mode 6 to work in USB mode.


No, we do not have a game blacklist for IGR.
If the reset combo does not work, then perhaps IGR didn't successfully locate the necessary functions from libpad.


OPL used to not support the early versions of libpad, but that only affected games made up to the earlier part of year 2000.
copy that


No, mode 8 exists to hide the "dev9" module. For some reason, some games seem to die when they find the dev9 module loaded.

I don't suppose people actually know why we have some games like that, that won't detect the network adaptor.
Maybe it was because the module return value wasn't initialized for hooked modules, like dev9. So you can try the new test ELF to see if it helped.
Well i tested, and it didnt changed. The only way to make the games see the network adaptor is using OPL 0.7
 
Couldn't the fact that newer versions of SMB is a lot less chatty on the network also help with performance?

I doubt it'll help much. You can only go so far with a computer that feels like it came from 1989.
How much less "chatty" is SMB2? If its commands are only a few bytes shorter, it still won't make network performance stellar.

What about a completely new protocol? A UDP based protocol has been worked on, but apparently, it doesn't work in-game.

If you change the protocol, then you will lose the ease-of-use factor. You will lose the ability to just connect to a PC and play. Neither can you use a NAS.
SMB became more than just a file-access protocol for Microsoft products. It became a rather generic way of sharing media between devices, even with non-Microsoft products.

Also because the IOP is slow and/or the hardware is not bug-free, there is a risk of data frame drops. If you implement flow control and retransmissions, you will get something like TCP again.

Part of the problem likely comes from using LWIP itself, for which we also consume its sockets layer feature. But if you replace the stack and/or remove the sockets layer, then other implications will follow suit: how do you debug? How do you get other modules to use your network stack?
You could potentially require very specialized modules to just work with OPL. Maintenance could also become much more challenging.

Maximus32 did get very good speeds - but his tests were effectively with no loads. Games may read data in smaller blocks (rather than a few MB), the IOP will be also used to do streaming to the SPU2, PADMAN will be spamming every 1/60th a second etc.
Once you use the system for something practical, then the actual throughput usually drops drastically. Well, In my experience anyway.

So unless he actually gets it working in a game and it really works so well, I have my doubts.

.hack fragment wasnt working for a few months (black screen), i tested your new version and it worked.

That series of games was supposed to be patched, but the results were quite inconclusive and I don't know what else to look at anyway... since I could not replicate the bug in the first place. The patch was written because I found that the developer did not call scePadEnd() before the IOP reboot, and correcting that mistake seemed to make the game work for the user who brought it up.

Nothing much was changed, which could cause unrelated games to start working. So if it has a problem, the problem is likely still there.

Maybe because it have more RAM??? This game also refuses to work in SMB as far I know and needs mode 6 to work in USB mode.

I used USB. Mode 6 shouldn't allow a game that has insufficient memory to work, to start working.
So I do think it's a case of the game working, due to software and/or hardware differences.

Well i tested, and it didnt changed. The only way to make the games see the network adaptor is using OPL 0.7

I see. So far back eh?
 
Last edited:
Maybe because it have more RAM??? This game also refuses to work in SMB as far I know and needs mode 6 to work in USB mode.
Jak and Daxter: The Precursor's Legacy (SCES_503.61) requires mode 3+6.
Without mode 3 it will not boot, without mode 6 it will not pass Sony Computer Entertainment screen.

zastanawia.gif

I don't remember exactly, it may also required mode 1 or 2 for HDD, but I'm not sure.

It should also at least boot through SMB with OPL 1291 (OPNPS2LD-8ee2149.ELF):
http://www.psx-place.com/threads/open-ps2-loader-v0-9-3.13415/page-23#post-155293.

It appears to be SMB 1.0.

Well, it's a shame that it is only ver 1.0.

The only reason why I am more willing to add support for SMB 2.0 now, is because SMB 1.0 was made an optional component in newer versions of Windows. It's making things more complicated for people to use.

We've also long lost the ability to list SMB shares, due to Microsoft disabling the command that we're using.
I'm also thinking that it'll lower the compatibility problems we have. Right now, we've mixing newer commands with some CIFS commands, for simplicity. But somehow it doesn't seem to work right with all devices, not even with all versions of Windows (like Windows Server 2008).

If you must use Windows XP for whatever reason, remember to keep it updated. Microsoft did release a special patch for it, despite the product being EOL'ed.

For most of the time I'm using Win XP for old games, some PS2 software & for sharing files through SMB for OPL.

If at least Win 7 can support SMB 2.0... well maybe it's time to upgrade OS?!
 
Last edited:
I Always IGR perfectly with Metal Gear Solid 3 and .hack games since OPL 0.9.3
So probably their IGR was broken for a moment in some of the newer test builds. I don't remember about NFS games if there was some of them that don't IGR, I'll check them.

Another game that is broken since some time is Super Dragon Ball Z I've the USA version. I had it with MODE 2 from iHDD (I don't remember if it was necessary for the game to boot or just to work better). Now I get BSOD at the boot.

Same problem with Jap version of the game: http://www.ps2-home.com/forum/viewtopic.php?p=35395#p35395

according on @oga tests it got broken on DB_1330, it works up to DB_1313. So the problem should be on some changes between ifcaro revs 1179 and 1192
 
I Always IGR perfectly with Metal Gear Solid 3 and .hack games since OPL 0.9.3
In Metal Gear Solid 3, take the Chyornyj Prud (black lake area with aligators) as example make the camera (preferably 3D if in Subsistence or First person view) face straight to the lake and try to trigger IGR, you will be stuck at no signal screen.

.hack fragment - lets take OPL rev1250 (offical Ifcaro, not PS2HOME) as example, try to to boot it from USB ;) you will get stuck in a black screen, at least on USB mode.

Of which games are you talking about?? Please list them.
Sure, my bad.

-Delta Force Black Hawk Down
-Delta Force Black Hawk Down Team Sabre
-Rogue Trooper

Need for Speed Underground 2 might be in that list too, but since it isnt playable online anymore, I didn't test.
 
Last edited:
In Metal Gear Solid 3, take the Chyornyj Prud (black lake area with aligators) as example make the camera (preferably 3D if in Subsistence or First person view) face straight to the lake and try to trigger IGR, you will be stuck at no signal screen.

Ah ok, so it was a problem depending on the area/things you're doing. Then it's possible I never IGR from a one of this scenery.

.hack fragment - lets take OPL rev1250 (offical Ifcaro, not PS2HOME) as example, try to to boot it from USB ;) you will get stuck in a black screen, at least on USB mode.

Now it's clear thank you. I alway played these games from iHDD.


Sure, my bad.

-Delta Force Black Hawk Down
-Delta Force Black Hawk Down Team Sabre
-Rogue Trooper

Need for Speed Underground 2 might be in that list too, but since it isnt playable online anymore, I didn't test.

Perfect, Thank you.
 

Similar threads

Back
Top