Editing Talk:PSP Emulation

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
== PSP Emulator Types and Revisions ==
<div>
<div style="float:top; text-align:center;">'''PSP Emulators Types and Revisions'''</div>
<div style="float:left; width:33%;">
{| class="wikitable" style="font-size:xx-small;"
|+ psp_emulator.elf (decrypted)
! Firmware !! Bytes !! MD5 !! <abbr title="Revision">Rev</abbr>
|-
! [[1.00_CEX|1.00]] ~ [[3.10_CEX|3.10]]
| colspan="3" {{no}}
|-
! [[3.15_CEX|3.15]]
| ? || ? || ?
|-
! ?
| ? || ? || ?
|-
! ?
| ? || ? || ?
|-
! [[3.66_CEX|3.66]]
| 419.120 || DFED8FCDB36A4284A27369304D47674F || ?
|-{{cellcolors|#ddddff}}
! [[3.70_CEX|3.70]]
| rowspan="3" | 419.176 || 0F6F1D92D045A86565DF705276776A41 || rowspan="3" | same
|-{{cellcolors|#ddddff}}
! ~
| style="text-align:center; background-color:#ddddff;" | ''Any''
|-{{cellcolors|#ddddff}}
! [[3.74_CEX|3.74]]
| DC8C67FEEB605D73D073BBCAD8F17E6A
|-{{cellcolors|#bbbbff}}
! [[4.00_CEX|4.00]]
| rowspan="2" | 419.416 || 7371A95BB0ACB1152EB13EA11C866F87 || rowspan="2" | same
|-{{cellcolors|#bbbbff}}
! [[4.01_CEX|4.01]]
| C17EE35A278E64227558FA9C39E805B5
|-{{cellcolors|#ddddff}}
! [[4.10_CEX|4.10]]
| rowspan="2" | 419.472 || DAA4E9816037E1EFFFF15B344B61BD1D || rowspan="2" | same
|-{{cellcolors|#ddddff}}
! [[4.11_CEX|4.11]]
| 2DF5AFE349E082A79AF4E50B8100F80A
|-
! [[4.15_CEX|4.15]]
| ? || ? || ?
|-{{cellcolors|#bbbbff}}
! [[4.20_CEX|4.20]]
| rowspan="3" | 419.480 || 540422B0759D20738BF498337E33B7E2 || rowspan="3" | same
|-{{cellcolors|#bbbbff}}
! ~
| style="text-align:center; background-color:#bbbbff;" | ''Any''
|-{{cellcolors|#bbbbff}}
! [[4.25_CEX|4.25]]
| 5D20DFAE9E0D704F6DD17D2A807A1D2C
|-
! ?
| ? || ? || ?
|-
! ?
| ? || ? || ?
|-
! ?
| ? || ? || ?
|-{{cellcolors|#ddddff}}
! [[4.78_CEX|4.78]]
| rowspan="3" | 419.520 || EFEA0DFDDD6E7C479983B5E4E8B95295 || rowspan="3" | same
|-{{cellcolors|#ddddff}}
! ~
| style="text-align:center; background-color:#ddddff;" | ''Any''
|-{{cellcolors|#ddddff}}
! [[4.82_CEX|4.82]]
| 5CAC36C3F940749B4DD5E03DB02C732A
|}
<span style="font-size:small">
{{widedot}}'''Decrypted (elf)''': changes <abbr title="when comparing two decrypted files of the same revision from different firmwares the only difference is the target firmware">every firmware version</abbr><br>
{{widedot}}'''<abbr title="0x20 bytes">Build label</abbr>''': no/unknown<br>
{{widedot}}'''<abbr title="2 bytes">Target Firmware</abbr>''': yes, repeated '''two''' times<br>
{{widedot}}'''Revision''': unknown
</span>
</div>
<div style="float:left; width:33%;">
{| class="wikitable" style="font-size:xx-small;"
|+ psp_translator.elf (decrypted)
! Firmware !! Bytes !! MD5 !! <abbr title="Revision">Rev</abbr>
|-
! [[1.00_CEX|1.00]] ~ [[3.10_CEX|3.10]]
| colspan="3" {{no}}
|-
! [[3.15_CEX|3.15]]
| ? || ? || ?
|-
! ?
| ? || ? || ?
|-
! ?
| ? || ? || ?
|-
! [[3.66_CEX|3.66]]
| 283.128 || 0F52CE7666276B71FF5C560D7BD28014 || ?
|-{{cellcolors|#ddddff}}
! [[3.70_CEX|3.70]]
| rowspan="3" | 283.128 || C35D80E8B1A4A61212EA773C061BF1DC || rowspan="3" | same
|-{{cellcolors|#ddddff}}
! ~
| style="text-align:center; background-color:#ddddff;" | ''Any''
|-{{cellcolors|#ddddff}}
! [[3.74_CEX|3.74]]
| A42CD1453C52149297A975F2BA5B2D38
|-{{cellcolors|#bbbbff}}
! [[4.00_CEX|4.00]]
| rowspan="2" | 283.128 || DF07955312D1C09DC2DC355EBA47F8AA || rowspan="2" | same
|-{{cellcolors|#bbbbff}}
! [[4.01_CEX|4.01]]
| A06E7BF7C1D062878593E1D4EA85B4C9
|-{{cellcolors|#ddddff}}
! [[4.10_CEX|4.10]]
| rowspan="2" | 283.128 || FB4801625CA15AC58DB28A4223EFD4A2 || rowspan="2" | same
|-{{cellcolors|#ddddff}}
! [[4.11_CEX|4.11]]
| 3154FF57D36E3D7C4F2C061393816482
|-
! [[4.15_CEX|4.15]]
| ? || ? || ?
|-{{cellcolors|#bbbbff}}
! [[4.20_CEX|4.20]]
| rowspan="3" | 283.120 || C125A486D3C48EA2C957EAFC0AB69B39 || rowspan="3" | same
|-{{cellcolors|#bbbbff}}
! ~
| style="text-align:center; background-color:#bbbbff;" | ''Any''
|-{{cellcolors|#bbbbff}}
! [[4.23_SEX|4.23 S]]
| C469B41798157C53C3E7794E9BDF9D36
|-
! [[4.25_CEX|4.25]]
| 283.120 || A675423F5C8B9FD02AA2150D46B953AE || ?
|-
! ?
| ? || ? || ?
|-
! ?
| ? || ? || ?
|-
! ?
| ? || ? || ?
|-{{cellcolors|#ddddff}}
! [[4.78_CEX|4.78]]
| rowspan="3" | 283.120 || A35809CE6C184F3E3B52C18E0AE19217 || rowspan="3" | same
|-{{cellcolors|#ddddff}}
! ~
| style="text-align:center; background-color:#ddddff;" | ''Any''
|-{{cellcolors|#ddddff}}
! [[4.82_CEX|4.82]]
| 58E104453AC60DE2B671E43F09D96E80
|}
<span style="font-size:small">
{{widedot}}'''Decrypted (elf)''': changes <abbr title="when comparing two decrypted files of the same revision from different firmwares the only difference is the target firmware">every firmware version</abbr><br>
{{widedot}}'''<abbr title="0x20 bytes">Build label</abbr>''': no/unknown<br>
{{widedot}}'''<abbr title="2 bytes">Target Firmware</abbr>''': yes, repeated '''one''' time<br>
{{widedot}}'''Revision''': unknown
</span>
</div>
</div>
<br style="clear: both;" />
== Playstation Portable memory regions ? ==
== Playstation Portable memory regions ? ==
  PPSSPP
  PPSSPP
Line 79: Line 244:


== Emulator patches ==
== Emulator patches ==
This patches are intended to be applyed to the PSP emulator
This patches are intended to be applyed '''to the emulator'''
 
=== Patch to redirect unsupported commands (experimental) ===
This ugly and highly experimental poc code simply redirects unsupported cmd's to 0x01010005 (Seek Begin), prolly breaks other cmd's


{{boxcode|float=left|width=50%|title=Original|code=<syntaxhighlight lang="asm">
=== Experimental Patch ===
Original:<br>
<syntaxhighlight lang="asm">
00000000000285B0
00000000000285B0
00000000000285B0 empty_buffer:                          # CODE XREF: sceIoIoctlAsync+74�j
00000000000285B0 empty_buffer:                          # CODE XREF: sceIoIoctlAsync+74�j
Line 111: Line 275:
00000000000285F4 loc_285F4:                              # CODE XREF: sceIoIoctlAsync+B4�j
00000000000285F4 loc_285F4:                              # CODE XREF: sceIoIoctlAsync+B4�j
00000000000285F4                stw      r31, 8(r30)  # return value
00000000000285F4                stw      r31, 8(r30)  # return value
</syntaxhighlight>}}
</syntaxhighlight>
 
<br>
{{boxcode|float=right|width=50%|title=Patched|code=<syntaxhighlight lang="asm">
Modification:<br>
00000000000285B0
<syntaxhighlight lang="asm">
00000000000285B0 loc_285B0:                              # CODE XREF: sceIoIoctlAsync+74�j
LOAD:00000000000285B0
00000000000285B0                                        # sceIoIoctlAsync+140�j ...
LOAD:00000000000285B0 loc_285B0:                              # CODE XREF: sceIoIoctlAsync+74�j
00000000000285B0                bl        _sys_libc_malloc
LOAD:00000000000285B0                                        # sceIoIoctlAsync+140�j ...
00000000000285B4                clrldi    r26, r3, 32
LOAD:00000000000285B0                bl        _sys_libc_malloc
00000000000285B8                lis      r28, 0x101 # 0x1010005                          # Seek cmd id
LOAD:00000000000285B4                clrldi    r26, r3, 32
00000000000285BC                ori      r28, r28, 5 # 0x1010005
LOAD:00000000000285B8                lis      r28, 0x101 # 0x1010005                          # Seek cmd id
00000000000285C0                b        loc_28724
LOAD:00000000000285BC                ori      r28, r28, 5 # 0x1010005
00000000000285C4 # ---------------------------------------------------------------------------
LOAD:00000000000285C0                b        loc_28724
00000000000285C4
LOAD:00000000000285C4 # ---------------------------------------------------------------------------
00000000000285C4 loc_285C4:                              # CODE XREF: sceIoIoctlAsync+184�j  #
LOAD:00000000000285C4
00000000000285C4                                        # sceIoIoctlAsync+2D0�j              # Both branches also modified, so we can use 5x4 bytes
LOAD:00000000000285C4 loc_285C4:                              # CODE XREF: sceIoIoctlAsync+184�j  #
00000000000285C4                clrldi    r7, r23, 32
LOAD:00000000000285C4                                        # sceIoIoctlAsync+2D0�j              # Both branches also modified, so we can use 5x4 bytes
00000000000285C8                extsw    r3, r24
LOAD:00000000000285C4                clrldi    r7, r23, 32
00000000000285CC                extsw    r4, r28
LOAD:00000000000285C8                extsw    r3, r24
00000000000285D0                mr        r6, r27
LOAD:00000000000285CC                extsw    r4, r28
00000000000285D4                clrldi    r8, r25, 32
LOAD:00000000000285D0                mr        r6, r27
00000000000285D8                mr        r5, r29
LOAD:00000000000285D4                clrldi    r8, r25, 32
00000000000285DC                bl        _IoFileMgrForUser_822ADD32
LOAD:00000000000285D8                mr        r5, r29
00000000000285E0                ld        r2, 0xC0+var_98(r1)
LOAD:00000000000285DC                bl        _IoFileMgrForUser_822ADD32
00000000000285E4                mr        r31, r3
LOAD:00000000000285E0                ld        r2, 0xC0+var_98(r1)
00000000000285E8                mr        r3, r29
LOAD:00000000000285E4                mr        r31, r3
00000000000285EC                bl        _sys_libc_free
LOAD:00000000000285E8                mr        r3, r29
00000000000285F0                ld        r2, 0xC0+var_98(r1)
LOAD:00000000000285EC                bl        _sys_libc_free
00000000000285F4                stw      r31, 8(r30)
LOAD:00000000000285F0                ld        r2, 0xC0+var_98(r1)
</syntaxhighlight>}}{{clear}}
LOAD:00000000000285F4                stw      r31, 8(r30)
</syntaxhighlight>


Unsupported ID's will be replaced with empty buffers and simply sent through IoIoctl.<br>
Unsupported ID's will be replaced with empty buffers and simply sent through IoIoctl.<br>
PGD = ID 0x04100001
PGD = ID 0x04100001<br>
This '''ugly and highly experimental poc code''' simply redirects unsupported cmd's to 0x01010005 (Seek Begin)<br>
prolly breaks other cmd's<br>


Supported cmd ID's:
Supported cmd ID's:
Line 155: Line 322:
  0x1F30003 (UMD disc read sectors operation)
  0x1F30003 (UMD disc read sectors operation)


*Reference help:
Referenced as help:<br>
**https://raw.githubusercontent.com/hrydgard/ppsspp/master/Core/HLE/sceIo.cpp
https://raw.githubusercontent.com/hrydgard/ppsspp/master/Core/HLE/sceIo.cpp
**https://code.google.com/p/jpcsp/source/browse/trunk/src/jpcsp/HLE/modules150/IoFileMgrForUser.java
<br>
https://code.google.com/p/jpcsp/source/browse/trunk/src/jpcsp/HLE/modules150/IoFileMgrForUser.java<br>


<pre>
<pre>
Please note that all contributions to PS3 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS3 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)

Templates used on this page: