PS3 Compatibility List - PS2 on PS3

@kozarovv The 'command ID : 00' without GameID that you always add at the end was a mistake ? it's useless ?
I been wondering about this command 0x0 too

The way i see it, is the "config commands" (either hardcoded inside the emulator selfs, or in a file for netemu) are inherited from the other emu types, in order of apparence:
ps2_emu.self --> ps2_gxemu.self --> ps2_softemu.self --> ps2_netemu.self

Now we are comparing the commands of ps2_gxemu.self with ps2_netemu.self (note we are bypassing softemu) and are the same commands, and follows the same order, the only differences are:
-some of the gxemu commands are disabled in netemu
-some commands was added for netemu by using bigger IDs, or "in between" the previous ID list

What i think is the disabled commands in netemu are directly related with hardware components (only works in PS3 models with full or partial backward compatibility with PS2), and because netemu is designed to be 100% sotware emulation they had no other option than disable them (but very probably they added other new commands to bypass this problem as most as posible)

At the time they developed netemu they had no need to respect the IDs, but they tryed as most as posible, there are only 4 commands added in between the Ids of gxemu, and from them we only know 2
-0x0 added because in previous versions the game config is hardcoded inside the .self and with it comes the GameID as part of the data structure... but in netemu the config if a external file so they needed to add the GameID to the file, and they decided to add command 0x0 in the first position because well... the first thing needed to know when loading the config file is if it belongs to that GameID... and the fact that is posible to load a config file without command 0x0 probably is just a meassure to not make this too much restrictive because sometimes the config files for a game can be used in a different game, i guess they wanted to take advantage at this at the time of preparing the "PS2 classics" releases for PSN where is needed to mess around with the config files
-0xA added because it seems the previous emulator types was not able to patch EE memory with a single uint32_t, the position in the command list is eactly next to the command 0x9 that has the same purpose but does the patching with 2 * uint32_t
-unknown_1 needs to be located next to another command with the same purpose, in between 0x13 and 0x18, one of these is going to have the same purpose than the unknown_1
-unknown_2 needs to be located next to another command with the same purpose, in between 0x1C and 0x22, one of these is going to have the same purpose than the unknown_2

The point is... netemu command 0xA is like an improvement of 0x9 this is why is located next to it
Following this deductive line the other 2 unknowns are going to be an improvement of a command located next to them, this is not for sure but there is a high probability to be this way :)
And the command 0x0 in netemu is intended to specify the GameID (maybe works as a config terminator too, i have no idea, but i have my doubts until someone tells me that is used that way in one of the official config files from a "PS2 classic" released in PSN)

Returning back to the brainstorming of the disabled commands in netemu... by looking at the command list in netemu is posible to see some disabled commands that are inherited from the previous emu types
There is some info in wiki that shows some kind of game patch data hardcoded inside ps2_emu.self (only for full backward compatibility PS3 models), this can be also considered a command
And i bet all this is supported in ps2_softemu.self (and it has a huge list of game configs hardcoded inside, like netemu, but probably is a bit pointless because is going to be the same list than netemu), actually netemu was a replacement of softemu, the bigger difference is netemu was rewritten from scratch but other than that.... netemu inherited all features of softemu (included the game config commands), right now im thinking there is a group of commands disabled in netemu that are inherited from softemu (commands since 0x30 up to 0x34, and since 0x36 up to 0x3C... or so... i cant tell for sure because most of what im saying is based in info posted by mysis in wiki or from talks with him) if im right with this speculation that commands are specific for softemu, also it means softemu is going to have a huge list of game config data hardcoded in it somewhere :)


I know, too long answer, but i started writing a straight oppinion about your question and when i realized i had too much text written already XD

While writing this i was looking at this table we are using where can be seen all the commands together to compare his positions and for an overview of what does each, in it can be seen better what i said
http://www.psdevwiki.com/ps3/User_talk:Sandungas#Table_Tests
 
Last edited:
@mysis can you say something about this?
Tel38H1SUm0.jpg
I remember seeing some guy(was it Hermes?) on Eltorado who actually accessed this menu. But unfortunately I couldn't find nor screenshot, nor thread now.
 
@mysis can you say something about this?
Tel38H1SUm0.jpg
I remember seeing some guy(was it Hermes?) on Eltorado who actually accessed this menu. But unfortunately I couldn't find nor screenshot, nor thread now.

Interesting, looks like built in ISO loader?
 
@lex3a
Use the ps2netemu.self from rebug 4.81, MD5: E0C1EAD7BE9409A0E8607544F3C4CD51
unself to elf, and add a function for modify the status flags.

loPMsw1.png


add this code to ps2netemu.elf with a hexeditor

pD55upA.png


make a call to this new function into the init function of the emu, a good place is here:

pSuJMXG.png


code to change with hexeditor:

qIZadd7.png


Save the file, sign it for your CFW version and copy the ps2netemu.self back to PS3.
Now your ps2netemu boots into the select menu.

EDIT:
Sry, I forgot, remove the test with flag[52:52]
replace it with a nop:
60 63 08 00 to 60 00 00 00
 
Last edited:
@mysis can you check this ones and post the values used in them ? (gxemu 0x1 = netemu 0x2)
SLUS-20213 | 1 | cmd: 0x1
SLPS-20106 | 1 | cmd: 0x1
SLPM-62108 | 1 | cmd: 0x1
SLKA-15007 | 1 | cmd: 0x1
SLKA-15021 | 1 | cmd: 0x1
SLPS-20131 | 2 | cmd: 0x1 cmd: 0x11

Im asking about it because the description in wiki about netemu command 0x2 is confusing and there are no examples of the valid values used in it
Also, because is a low ID number, so is one of the oldest commands implemented
The description in wiki about it is "Config file revision" but in this hardcoded configs it can be seen how that command is used alone, and a config containing only the "config file revision" is pointless, so it needs to be other thing
 
and post the values used in them ?
00 00 03 E8
00 00 0B B8
Where 0x3E8 is mostly used, 0xBB8 seem to be only in one game (SLUS-20213).
Edit: Also 0x1770 in SLPS-20131


0x3E8 = 1000 in decimal
0xBB8 = 3000 in decimal
0x1770 = 6000 in decimal
 
Last edited:
00 00 03 E8
00 00 0B B8
Where 0x3E8 is mostly used, 0xBB8 seem to be only in one game (SLUS-20213).
Edit: Also 0x1770 in SLPS-20131


0x3E8 = 1000 in decimal
0xBB8 = 3000 in decimal
0x1770 = 6000 in decimal
Nice, i guessed that one was going to be "easy", and is something important, what i was not expecting is that conversions to decimal was going to be so straight, lol, cool
So it seems all valid values for netemu command 0x2 are multiplyers of 1000, we dont know what does but we know 3 valid values for it, thats good enought by now imo (is better to move on to another command, we are at the time or rushing)
Next thing needed to try with netemu command 0x2 is to use the other values in between, 2000, 4000, 5000, and it needs to be made in a game where really that command does some notable difference visually (so it can be seen easilly the results of changing it), also like you said the other day, when doing this kind of tests is needed to go up until the result is either very weird or your value is ignored (so it means you have reached the max value of the range or the value is stupid and a nonsense)

Im not into that though, im just mentioning it because there is lot of people here reading and the most time it passes they are getting more used to deal with ps2 config files in a hexeditor, so eventually could appear someone willing to spend some time in this weird experiments (that are not so weird because are going to return some interesting info for sure)

By now im rushing a bit, trying to get used to the commands, but i think im missing something XD
Where did you explained how to get that area with the game config data commands from inside ps2_gxemu.self ?
I been reading this thread back and forth like 40 times in the last days, together with the info in wiki, and all i remember was you telling mysis "hey, look at this", and mysis replaying "there are lot of candies over there"... but thats basically all i got, lol
What i know is im not going to be able to "dehash" that GameID from the list because mysis used some dehashing algorithm i ignore, so i was thinking that was a stopper because if i have no GameID then is not going to be posible to see the offset where the game config data is located (so is like unconnected), but now i saw you posted the values i gues you got it
Can some of you explain what is needed to do you process all that huge area of game config data inside ps2_gxemu.self ? (all i need is to crop that data in 788 chunks, one for every game, thats enought i think)
Or alternativelly, some of you made that cropping and could share the files ? (788 files, the raw data cropped)
 
Last edited:
By now im rushing a bit, trying to get used to the commands, but i think im missing something XD
Where did you explained how to get that area with the game config data commands from inside ps2_gxemu.self ?
I been reading this thread back and forth like 40 times in the last days, together with the info in wiki, and all i remember was you telling mysis "hey, look at this", and mysis replaying "there are lot of candies over there"... but thats basically all i got, lol
What i know is im not going to be able to "dehash" that GameID from the list because mysis used some dehashing algorithm i ignore, so i was thinking that was a stopper because if i have no GameID then is not going to be posible to see the offset where the game config data is located (so is like unconnected), but now i saw you posted the values i gues you got it
Can some of you explain what is needed to do you process all that huge area of game config data inside ps2_gxemu.self ? (all i need is to crop that data in 788 chunks, one for every game, thats enought i think)
Or alternativelly, some of you made that cropping and could share the files ? (788 files, the raw data cropped)
Actually is not so easy.. First thing is that ID database is not is the same place as commands database. Because you got hashed id (mysis post with ids) like 3f905a9bd then you are searching file for that hex string. There should be one result, similar to this:

Offset 0x33F5C0 (you can look at it in hex editor at 0x34F5C0)

00 00 00 03 F9 05 A9 BD 00 00 00 00 00 34 55 50
00 00 00 01 00 00 00 00

Here you got info that id 3f905a9bd commands are localized at offset 0x345550 in memory, and that title use 1 command.
Noe you need to jump to 0x345550 to see what command is used, lets do this:

00 00 00 09 00 00 00 00 00 00 00 00 00 34 55 68
00 00 00 02 00 00 00 00

Our result mean that used command is 0x9 (patch disc), more data is localized at 345568, and command count is 2. So lets jump again (or scroll this time as offset is almost there).

00 00 0A 87 00 00 04 AC 00 00 00 00 00 51 B7 48
00 00 00 00 00 51 B7 30 00 00 00 14 00 00 00 00

Ok, what we got here? Is data for first command, 0xA87 is sector to patch, 0x4AC is offset in sector, and.. another 2 addresses in memory to jump to. One is with original opcode, second with Replace opcode (those 2 addresses are always near itselfs). And those 14 is opcode length.

At 0x51B730 you will find

99 10 CA 4B 19 21 CA 4B AC F7 FE 4B FF 02 00 4A
00 88 42 48

At 0x51B748

00 88 42 48 99 10 CA 4B 19 21 CA 4B AC F7 FE 4B
FF 02 00 4A

So you have first part of config now. :D $ony don't like it easy. To finish patch you need to back to 0x345568 and under first sector, offset, length values you will find the same data for second s,o,l, opcode.

Pain in the ass..

Anyway, simplest configs (switches) are easier as you need to just find hash for id then jump to memory address shown there to find command.
Problem is that to get to correct addresses you need Power PC (CELL) disassembler. But there is a way, but painful one. Painful because one mistake can bring you to other address :)

Solution for hex editor:

Search for hashed ID in hex editor
This will bring you to hash, offset, count
To every address/offset you will find there add 0x10000 to land in that address in hex editor.
Here is your command.

Ps. Script can make this much easier, but I can't write it..
Ps2. Area (then I though that, not sure is right) with hashes is at: 0x33DFEB to 0x34296B so in 0x34DFEB to 0x35296B in hex editor.
 
Last edited:
Mafia CONFIG from : http://www.psx-place.com/threads/compatibility-list-ps2-on-ps3.1306/page-23#post-87748
is working with SLES522.78 (EU / EN), SLUS_206.71 (US)

ported to SLES522.80 (EU / FR) :

Code:
3D 00 00 00 57 44 00 00 09 00 00 00 05 00 00 00
D0 60 3E 00 3C A1 0F 0C 9C 90 84 8F 00 10 01 3C
08 00 02 24 D8 60 3E 00 08 00 02 24 01 00 05 24
9C 90 84 8F 10 3C 22 AC E0 60 3E 00 10 3C 22 AC
00 10 01 3C 01 00 05 24 3C A1 0F 0C D4 23 3E 00
FF FF 02 24 0A 00 50 10 FF FF 02 24 00 00 00 00
4C F0 16 00 00 60 80 44 50 07 42 8E 00 60 80 44
0D 00 00 10 00 00 00 00
 
@lex3a
Use the ps2netemu.self from rebug 4.81, MD5: E0C1EAD7BE9409A0E8607544F3C4CD51
unself to elf, and add a function for modify the status flags.

loPMsw1.png


add this code to ps2netemu.elf with a hexeditor

pD55upA.png


make a call to this new function into the init function of the emu, a good place is here:

pSuJMXG.png


code to change with hexeditor:

qIZadd7.png


Save the file, sign it for your CFW version and copy the ps2netemu.self back to PS3.
Now your ps2netemu boots into the select menu.

EDIT:
Sry, I forgot, remove the test with flag[52:52]
replace it with a nop:
60 63 08 00 to 60 00 00 00

so much work, one byte patch is enough xD
 
Can fix Ape Escape 2? SCCS-40001
https://wiki.pcsx2.net/Ape_Escape_2
Is not in the gxemu configs list mysis posted, i checked all the TitleID of that game for all regions in the list, just incase someone wants to check, is not there) here:
http://www.psx-place.com/threads/compatibility-list-ps2-on-ps3.1306/page-16#post-87550
Or here:
http://www.psx-place.com/threads/compatibility-list-ps2-on-ps3.1306/page-17#post-87583
Btw, the TitleID you posted (SCCS-40001) seems to be a trial version... im not so sure if is worthy to make configs for trials and demos, maybe at some point for completionism, but by now is better to fix the other versions of the game

Im also looking here and is reported as "Minor slowdown, some texture flickering"
http://www.psdevwiki.com/ps3/PS2_Classics_Emulator_Compatibility_List#A
Im not too used to the commands but there has been some talks and few experiments about texture fixes that could be tested... and i been thinking there must be some way to fix most of the fps drops and slowdowns of most games just by "decreasing the workload" of the emulated machine, with this i mean to deactivate stuff, or decrease the quality of some tasks
The tasks in netemu are assigned by SPU (for all CELL coprocessors, except one that is disabled at factory) though... so this idea of decreasing workload could only work if we decrease the workload of the SPU affected
Lets say at some point someone realizes that there is an speciffic command that is able to reduce the workload of SPU3, thats nice... but if our problem is in SPU4 then that command is not going to help :/
Just some thoughts
 
Last edited:
SLUS_210.65 4f905a9dd Need for Speed Underground 2
SLUS_210.69 4f905a9fd American Chopper
SLUS_210.83 4f905a94d Lego Star Wars
Looks like softemu also have that 0x4 command that seems to be speed hack in gx_emu. Worth to check deeper what it does.
PS. In attachment latest softemu (3.74), with more/other game IDs than in gx_emu.
 

Attachments

cool....i already thought you checked 2.30 update for gx_emu due to yakuza fix etc. :)
if it is present in softemu i will check it out...lets see
 

Similar threads

Back
Top