Editing Talk:PSP Emulation
Jump to navigation
Jump to search
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 | This patches are intended to be applyed '''to the emulator''' | ||
=== 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> | |||
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> | 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) | ||
Referenced as help:<br> | |||
https://raw.githubusercontent.com/hrydgard/ppsspp/master/Core/HLE/sceIo.cpp | |||
<br> | |||
https://code.google.com/p/jpcsp/source/browse/trunk/src/jpcsp/HLE/modules150/IoFileMgrForUser.java<br> | |||
<pre> | <pre> |