PS3 Compatibility List - PS2 on PS3

Thanks to menu found by @3141card you can easy test it. So if any game black screen, and PS menu is still able to show, then you can try enable Force Flip Field. Easy, but require game for test.

So, we can reload the config file through this menu without relaunching the game ?
Unfortunatly, it look like the sprx are unloaded when we launch the emulator, so, we can't change the file using a ftp during a black screen for example ;)

It could be nice if we could add every command in this menu ^^'
 
So, we can reload the config file through this menu without relaunching the game ?
No, only entries from debug menu are applied in real time, after confirming with x button

Unfortunatly, it look like the sprx are unloaded when we launch the emulator, so, we can't change the file using a ftp during a black screen for example ;)

Ftp work on lv2, lv2 is unloaded and replaced with netemu lv2. Anyway is possible to inject payload with very limited ftp (netemu can't create new files for example. Only modify ones that already exist without changing size - like with memory card.
 
  • Like
Reactions: Zar
ok, thanks ^^'

Can we help you to get some CONFIG files ? I don't have clue how u do this, perhaps u explained it somewhere ?

I have timespliter 2 SLUS_203.14 which is in the list. I can try test to get this one :)
 
@Zar I explained little bit here: http://www.psx-place.com/threads/compatibility-list-ps2-on-ps3.1306/page-28#post-87983

In short:

Search for hash of game (link to hash list: http://www.psx-place.com/threads/compatibility-list-ps2-on-ps3.1306/page-16#post-87550)
Search for hash in disassembler
There you get memory address where you need to jump to find config, and count of used configs.
And here is little bit complicated as some addresses give you true config, some part of config with address where to jump again.

Iirc Time Splitters 2 use 0x9, so 0xB in netemu. And is for sure not good place to start learning, specially when you add byte reversing that need to be done, etc. Anyway I have few minutes so I try to look at this game and post config here. :)

I try to explain in better this weekend, but not promise because I have OSH training right after work this saturday :/

Edit: Config for TS2 SLUS-20314. Not sure I correctly used replace-original bytes order, and not sure that config editor did byte reversing. Please try:

Code:
00000000  3D 00 00 00 57 44 00 00 0B 00 00 00 01 00 00 00  =...WD..........
00000010  96 BC 22 00 E0 06 00 00 58 00 00 00 03 00 04 24  –Ľ".ŕ...X......$
00000020  98 CD 85 8F 28 0D 11 0C 00 00 00 00 FB FF 40 04  .Í…Ź(.......ű˙@.
00000030  00 00 00 00 2D 20 00 00 9C CD 85 8F 28 0D 11 0C  ....- ..śÍ…Ź(...
00000040  00 00 00 00 FB FF 40 04 00 00 00 00 B8 CD 84 8F  ....ű˙@.....¸Í"Ź
00000050  7C 0D 11 0C 00 00 00 00 FC FF 40 04 00 00 00 00  |.......ü˙@.....
00000060  03 00 04 24 A0 10 11 0C 00 00 00 00 2D 20 00 00  ...$ .......- ..
00000070  A0 10 11 0C 03 00 04 24 A0 10 11 0C 00 00 00 00   ......$ .......
00000080  2D 20 00 00 A0 10 11 0C 00 00 00 00 B8 CD 84 8F  - .. .......¸Í"Ź
00000090  7C 0D 11 0C 00 00 00 00 FC FF 40 04 00 00 00 00  |.......ü˙@.....
000000A0  03 00 04 24 98 CD 85 8F 28 0D 11 0C 00 00 00 00  ...$.Í…Ź(.......
000000B0  FB FF 40 04 00 00 00 00 2D 20 00 00 9C CD 85 8F  ű˙@.....- ..śÍ…Ź
000000C0  28 0D 11 0C 00 00 00 00 FB FF 40 04 20 00 00 00  (.......ű˙@. ...
000000D0  64 00 00 00 00 00 00 00 00 00 00 00              d...........

ziped config file in attachment.
 

Attachments

Last edited:
  • Like
Reactions: Zar
meh it's weird i was trying to do it I didn't found the same thing.
I'll try it as soon as the file is copied in the internal hdd :p

thanks
 
I tested it, and it's not working. BlackScreen.

I did the same mistake : According to the wiki with CONFIG game Kessen II, the First data is the Patched data in little endian. So we have to swap it to little endian and to put the patched data first.. (So, the size must be multiple of 4 ?)

I just noticied u used the config editor, it's completly mb then :p

PS : This command ID 0xB change the values using offsets of the ISO... imo, it sux. It's better to use EE offset or elf offsets.

PS2 : Also, after rechecking our both config i found that a difference is in the size of the data, i found 0x5C and u found 0x58. Perhaps, it's because we aren't using the same elf. Mine is extracted from 4.81. The 4 bytes added aren't changed it's 0x00000000 remplaced by 0x00000000.... useless :p
 
Rough explain with ps2_gxemu.self from 4.81/4.82

First you need to decrypt the file with scetool (scetool.exe -d ps2_gxemu.self ps2_gxemu.elf)
Then open it in hexeditor and delete the first 0x10000 bytes (save it as new file ps2_gxemu.cropped.elf)

Now, in this version of the emu we know the table containing the game title IDs (CRC hashed) is at offset 0x33DFE8
So "go to" that position (in HxD ctrl+g)
You can also jump to that position by searching for the first title_id_crc mysis posted for the first game, the first game in the list is "24: The Game" (SLUS-21268)... or the value resulting after hashing the title ID mysis posted before, for this game is: 0x00000054a955f965
So you can "find" that value (in HxD ctrl+f)

Im going to call this area the "TITLE ID table"... you are at the start of that table
Every entry in this table is 0x18 bytes length, there are 788 entries (in decimal), and every entry is a game, the entry fields are divided like this:
0x8 bytes = title_id_crc
0x8 bytes = commands_offset
0x4 bytes = commands_count
0x4 bytes = unknown

So... the title_id_crc is the value you have marked in bold right now (incase you tryed to "find" the value 0x00000054a955f965)
commands_offset is the offset where are located the next data you have to read
commands_count is just a counter, usually is just 1 or 2... the bigger value you are going to find in gxemu is 5
And the unknown seems to be always zero (at the end of other areas appears that zeroes too, i think is some kind of terminator)

Ok... so lets move deeper :)
You need to copy the commands_offset and "go to" that offset (in HxD ctrl+g)
Now you are in a different table (1 level deeper in the structure), im going to call this the "Command table"
In it you have 0x18 bytes for every entry, divided like this:
0x4 bytes = command_id
0x4 bytes = unknown
0x10 bytes = varies_by_command

The command_id is straightforward, the only worry you have to care is the ID numbers gets confusing because changes by emulator type, i have been making a table in the last days in wiki that works pretty fine as an overview of what the commands does and its correspondency in between emus (if someone has some suggestion of wants to help i will like it):
http://www.psdevwiki.com/ps3/Talk:PS2_Emulation#PS2_Emulators_Config_Commands

The 0x4 unknown bytes is again filled with zeroes (so is used again as a terminator or is an area reseved they never used, at least in gxemu seems to be always zeroes)

And the 0x10 bytes that varies_by_command are harder to explain (and needs a list of all commands to see how every commands uses that 0x10 bytes), im not going to explain that to not make this too longer and because i dont have everything identifyed at this point
But basically...
If you look at the table in wiki you will realize i used a naming convention to simplify the purpose of the commands, there are some commands that just works as a "switch"... this ones has the 0x10 bytes filled with zeroes (doesnt stores any value in the config)
Next ones in complexity are the commands that "sets" a value, this ones stores a value (or two) and the usage of that 0x10 bytes depends of the length of the value/s
For all this kind of commands (the ones for "switches" and "sets") the data structure finishes here (you dont need to jump to other offsets to search for more data)

And now is where it gets more harder :P
There are some commands that uses a "list", are the ones marked in green color in the table in wiki
This ones stores offsets inside the 0x10 bytes i was mentioning before, actually iirc most of them stores 2 offsets of two different positions, so we need to "jump" again to other area of the file, in the last days i made my mind several times about how to label this area, initially i thought in "extended data", "expanded data", and other things like that, but at this point i think the best name is "command list table"

In that command list table you are going to find the data used to apply patches , either to the game disc image, or to EE memory, or well... some others are unknwon

But this doesnt ends here... some of the commands uses another "level down" in the structure, that last level seems to be pretty straightforward though, to locate it you are given the offset and lenght of every value, so is very easy to retrieve them, the problem is we are at the most deeper level of the structure and if you want to continue reading the other data for this same command you have to jump back and forth several times... doing it in a manual way in hexeditor is a mess, lol, but with some practise you will get the concept fast

So as a resume... there are 4 tables... we are "jumping blindly" to the table most at top because we know the position, and the hashed title_id_crc of the games that appears on it, this is not the correct way of doing it but is ok :)
The simple commands (the ones of type "switch" and "set") only uses two levels of the structure
The other commands goes deeper to the third level and fourth in some cases
 
Last edited:
PS : This command ID 0xB change the values using offsets of the ISO... imo, it sux. It's better to use EE offset or elf offsets.
But this patch is 99% not patching EE memory. That's why 0x0B. Also there are some rare cases when game need patch elf before loading to ee ram, vide Ice Age 2.

PS2 : Also, after rechecking our both config i found that a difference is in the size of the data, i found 0x5C and u found 0x58. Perhaps, it's because we aren't using the same elf. Mine is extracted from 4.81. The 4 bytes added aren't changed it's 0x00000000 remplaced by 0x00000000.... useless :p
Yes I shortened it to 0x58, but its 0x5C. Anyway patch don't work because I didn't reversed bytes. I though that Config editor do this automatically.

Edit: Ok I looked at ISO and patch is for main elf file, and you can probably apply it by 0xA. It was 0xB because netgui.elf use the same memory offsets when loaded. So it cause conflict if you patch EE memory, because it will patch also those elf. Anyway netgui is not used so you can do this by 0xA config safely on netemu. Anyway, in both ways all you need to do is reverse endianess. :)
 
Last edited:
  • Like
Reactions: Zar
Not sure why, I think we didn't changed anything related to users. FYI @STLcardsWS

@mysis I managed to run one of not working PCSX2 games using "gx_emu 0x0B patches" !! Looks like PS3 community isn't only one that get profit on reversing those emus! Also PCSX2 community should get something nice! :D

I am not suprised :) Dead or alive 2 hardcore was also listed as not working on pcsx2 back then, but worked on net emu and some more. there is another game not working on pcsx2, but with patches from gx_emu, however iirc that was 0x08 which requires more RE.
 
I am not suprised :) Dead or alive 2 hardcore was also listed as not working on pcsx2 back then, but worked on net emu and some more. there is another game not working on pcsx2, but with patches from gx_emu, however iirc that was 0x08 which requires more RE.
In this case fixed game is Ice Age 2. :) Anyway for some reason patching ee memory by pnach cause slowdowns. Patching iso directly make game work perfect. :)

0x8 from netemu or gxemu?
 
ok :p

It didn't swap the bytes with this command because I presumed it was writing the bytes 1 by 1 because it also write the size of the data in byte. Anyway, I tryed to create it correctly this time but it's not working :(. It freeze the system without le ps2 logo. (if I remove the command 0x20 it doesn't freeze but still got a BlackScreen after the logo.
I don't have a clue where I'm wrong ...

Code:
3D 00 00 00 57 44 00 00 0B 00 00 00 01 00 00 00
96 BC 22 00 E0 06 00 00 5C 00 00 00 24 04 00 03
0C 11 10 A0 00 00 00 00 00 00 20 2D 0C 11 10 A0
00 00 00 00 8F 84 CD B8 0C 11 0D 7C 00 00 00 00
04 40 FF FC 00 00 00 00 24 04 00 03 8F 85 CD 98
0C 11 0D 28 00 00 00 00 04 40 FF FB 00 00 00 00
00 00 20 2D 8F 85 CD 9C 0C 11 0D 28 00 00 00 00
04 40 FF FB 00 00 00 00 24 04 00 03 8F 85 CD 98
0C 11 0D 28 00 00 00 00 04 40 FF FB 00 00 00 00
00 00 20 2D 8F 85 CD 9C 0C 11 0D 28 00 00 00 00
04 40 FF FB 00 00 00 00 8F 84 CD B8 0C 11 0D 7C
00 00 00 00 04 40 FF FC 00 00 00 00 24 04 00 03
0C 11 10 A0 00 00 00 00 00 00 20 2D 0C 11 10 A0
00 00 00 00 20 00 00 00 64 00 00 00 00 00 00 00
00 00 00 00
 
Try this.

Code:
3D 00 00 00 57 44 00 00 0B 00 00 00 01 00 00 00 96 BC 22 00 E0 06 00 00 5C 00 00 00 24 04 00 03 8F 85 CD 98 0C 11 0D 28 00 00 00 00 04 40 FF FB 00 00 00 00 00 00 20 2D 8F 85 CD 9C 0C 11 0D 28 00 00 00 00 04 40 FF FB 00 00 00 00 8F 84 CD B8 0C 11 0D 7C 00 00 00 00 04 40 FF FC 00 00 00 00 24 04 00 03 0C 11 10 A0 00 00 00 00 00 00 20 2D 0C 11 10 A0 00 00 00 00 24 04 00 03 0C 11 10 A0 00 00 00 00 00 00 20 2D 0C 11 10 A0 00 00 00 00 8F 84 CD B8 0C 11 0D 7C 00 00 00 00 04 40 FF FC 00 00 00 00 24 04 00 03 8F 85 CD 98 0C 11 0D 28 00 00 00 00 04 40 FF FB 00 00 00 00 00 00 20 2D 8F 85 CD 9C 0C 11 0D 28 00 00 00 00 04 40 FF FB 00 00 00 00 20 00 00 00 64 00 00 00 00 00 00 00 00 00 00 00

Edit... Tried all possibilities with 0B. Not work at all, also 20 command seems to break IPU completely, you can even exit emu using DS3 buttons, but screen stay blank :D Sorry @Zar this game is too hard to fix, or on netemu it need more patches. Or @mysis will post working config like always. :P
 
Last edited:
According to the comment of kessen II, the patched data are the first one then the original data.

anyway, I tested it and I have the same result : blackscreen freeze. and if I removed the command 0x20 ps2logo blackscreen (without freeze).

Are you sure that the GX ID 0x1D is Net ID 0x20 ? 2 other ID use a param uint64_t : 0x24 and 0x13
 
Im looking at it too while you are talking, im thinking the problem is in the data inside that two areas of 0x5C length, do you have that identifyed ?, i remember you was talking about this command in your other tutorial thread but i dont remember if there was some unknown bit related with it

Inside that areas there are several values, im wondering if all them needs to be changed indianess, and if so... how long must be considered because there are a couple that could be uint64_t, and others like first one at the start uint16_t

Also, have you tryed to swap endianess of the whole 0x5C data chunk ? (entirelly like if it was some data stream)

Dunno, but it needs to be something like that... what is obvious is the data is there and should be correct... maybe there is an excess of data (some info field not needed by netemu), but there must not be any missing data, all is there :)
I guess is better to use another easyer candidate as guinea pig, eheheh
 
Are you sure that the GX ID 0x1D is Net ID 0x20 ? 2 other ID use a param uint64_t : 0x24 and 0x13
I'm sure that 1C = 1F, and that 1E = 21, so 1D should be 20.
anyway, I tested it and I have the same result : blackscreen freeze. and if I removed the command 0x20 ps2logo blackscreen (without freeze).
Is not freeze, you can exit emu "blindly".
Inside that areas there are several values, im wondering if all them needs to be changed indianess, and if so... how long must be cosnidered because there are a couple that could be uint64_t, and others like first one at the start uint16_t

Also, have you tryed to swap endianess of the whole 0x5C data chunk ? (entirelly like if it was some data stream)
This command use uint32_t values and its count. So you need to swap every uint32_t. That's I'm sure.

Btw. @Zar if you want you can try to patch iso directly in hxd. 0xB do the same. Then you gonna know that patch work on netemu or not.
 
  • Like
Reactions: Zar
When it's NOT frozen, I can exit the emu with the PS button.

I presumed the patch was working as it's an 'official' :mad:
I'll try the patched iso directly :p
 
patch iso manually and command 0x20 with the config
For netemu command 0x20 you can use values 100, 200, 240 (all valid values found, converted to decimal), probably 120 and 400 are valid too
 
command 0x20 with the config
For netemu command 0x20 you can use values 100, 200, 240 (all valid values found, converted to decimal), probably 120 and 400 are valid too
Actually there is something wrong with that command. It break display (IPU), but don't hangs it. Maybe netemu need other values?
 

Similar threads

Back
Top