Editing Dev Tools
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: | ||
== Tools == | ==Tools== | ||
[http://pastie.org/1430104 hexkey2bin.c] | [http://pastie.org/1430104 hexkey2bin.c] | ||
Line 13: | Line 13: | ||
[http://pastie.org/private/vgrajylkeetkem7ommqdta downgrade] | [http://pastie.org/private/vgrajylkeetkem7ommqdta downgrade] | ||
== Git == | ==Git== | ||
[http://library.edgecase.com/git_immersion/ git docs] | [http://library.edgecase.com/git_immersion/ git docs] | ||
== SceTool == | == SceTool == | ||
* [http://www.ps3devwiki.com/files/devtools/scetool/ scetool] / [http://www.sendspace.com/file/a0an56] (Windows) | |||
* [http://www. | |||
** [http://mir.cr/MLZONDKY cygwin-dll.rar] (needed in case of cygwin1.dll missing error) | ** [http://mir.cr/MLZONDKY cygwin-dll.rar] (needed in case of cygwin1.dll missing error) | ||
* <!--// https://www.dropbox.com/sh/9tp1x59jd5z34qa/10BT-4IDxX //-->[https://www.dropbox.com/sh/9tp1x59jd5z34qa/QBcYdjPA9q/ps3/release/scetool_0.2.9.7z scetool_0.2.9.7z] (Linux) | * <!--// https://www.dropbox.com/sh/9tp1x59jd5z34qa/10BT-4IDxX //-->[https://www.dropbox.com/sh/9tp1x59jd5z34qa/QBcYdjPA9q/ps3/release/scetool_0.2.9.7z scetool_0.2.9.7z] (Linux) | ||
* [http://www.2shared.com/file/Lshbj21H/scetool_029_mac.html scetool_0.2.9] (OSX) | * [http://www.2shared.com/file/Lshbj21H/scetool_029_mac.html scetool_0.2.9] (OSX) | ||
common for all above: [http://pastie.org/8026816 keys] | |||
scetool 0.2.7 <public build> (C) 2011-2012 by naehrwert | scetool 0.2.7 <public build> (C) 2011-2012 by naehrwert | ||
NP local license handling (C) 2012 by flatz | NP local license handling (C) 2012 by flatz | ||
=== Setup === | ===Setup=== | ||
- /data/keys : Keyfile. | - /data/keys : Keyfile. | ||
- /data/ldr_curves : Loader curves (7744 bytes). | - /data/ldr_curves : Loader curves (7744 bytes). | ||
Line 38: | Line 38: | ||
- /raps/* : *.rap files | - /raps/* : *.rap files | ||
==== Keyfile format ==== | ====Keyfile format==== | ||
[keyname] | [keyname] | ||
type={SELF, RVK, PKG, SPP, OTHER} | type={SELF, RVK, PKG, SPP, OTHER} | ||
Line 73: | Line 73: | ||
==== Error: Could not find keyset for SELF ==== | ==== Error: Could not find keyset for SELF ==== | ||
Unlike unself, scetool does not bruteforce keys. So if you are trying to decrypt a file that is using a 4. | Unlike unself, scetool does not bruteforce keys. So if you are trying to decrypt a file that is using a 4.53 key (4.20-{{latest}}) and you only have that same key under : | ||
4.20 {{dot}} 4.21 {{dot}} 4.22 {{dot}} 4.23 {{dot}} 4.25 {{dot}} 4.26 {{dot}} 4.30 {{dot}} 4.31 {{dot}} 4.40 {{dot}} 4.41 {{dot}} 4.45 {{dot}} 4.46 {{dot}} 4.50 | 4.20 {{dot}} 4.21 {{dot}} 4.22 {{dot}} 4.23 {{dot}} 4.25 {{dot}} 4.26 {{dot}} 4.30 {{dot}} 4.31 {{dot}} 4.40 {{dot}} 4.41 {{dot}} 4.45 {{dot}} 4.46 {{dot}} 4.50 | ||
it will error out. | it will error out. | ||
Line 106: | Line 106: | ||
-2, --key-revision e.g. 00,01,...,0A,... [[Revision versus Version|Key Revision]] | -2, --key-revision e.g. 00,01,...,0A,... [[Revision versus Version|Key Revision]] | ||
-m, --meta-info Use provided meta info to decrypt. | -m, --meta-info Use provided meta info to decrypt. | ||
-3, --self-auth-id e.g. 1010000001000003 [[ | -3, --self-auth-id e.g. 1010000001000003 [[Authentication IDs|Authentication ID]] | ||
-4, --self-vendor-id e.g. 01000002 [[ | -4, --self-vendor-id e.g. 01000002 [[Vendor IDs|Vendor ID]] | ||
-5, --self-type LV0/LV1/LV2/APP/ISO/ | -5, --self-type LV0/LV1/LV2/APP/ISO/ | ||
LDR/NPDRM [[ | LDR/NPDRM [[SELF Types|SELF Type]] | ||
-6, --self-fw-version e.g. 0003004100000000 [[Revision versus Version|Firmware Version]] | -6, --self-fw-version e.g. 0003004100000000 [[Revision versus Version|Firmware Version]] | ||
-7, --self-add-shdrs TRUE(default)/FALSE Whether to add ELF shdrs or not. | -7, --self-add-shdrs TRUE(default)/FALSE Whether to add ELF shdrs or not. | ||
Line 121: | Line 121: | ||
-j, --np-add-sig TRUE/FALSE(default) Whether to add a NP sig. or not. | -j, --np-add-sig TRUE/FALSE(default) Whether to add a NP sig. or not. | ||
=== History === | ===History=== | ||
==== Version 0.2.7 ==== | ====Version 0.2.7==== | ||
- Added local NP license handling. | - Added local NP license handling. | ||
- Added option to override klicensee. | - Added option to override klicensee. | ||
- Added option to disable section skipping (in SELF generation). | - Added option to disable section skipping (in SELF generation). | ||
==== Version 0.2.5 ==== | ====Version 0.2.5==== | ||
- Added option to use provided metadata info for decryption. | - Added option to use provided metadata info for decryption. | ||
- "PS3" path environment variable will now be searched for keys/ldr_curves/vsh_curves too. | - "PS3" path environment variable will now be searched for keys/ldr_curves/vsh_curves too. | ||
==== Version 0.2.4 ==== | ====Version 0.2.4==== | ||
- Added option to display raw values. | - Added option to display raw values. | ||
- Moved factory Auth-IDs to <public build> (as they are on | - Moved factory Auth-IDs to <public build> (as they are on ps3devwiki now). | ||
==== Version 0.2.2 ==== | ====Version 0.2.2==== | ||
- Added options to override control/capability flags (32 bytes each). | - Added options to override control/capability flags (32 bytes each). | ||
- Fixed where a false keyset would crash scetool when decrypting a file. | - Fixed where a false keyset would crash scetool when decrypting a file. | ||
- Some source level changes and optimizations. | - Some source level changes and optimizations. | ||
==== Version 0.2.1 ==== | ====Version 0.2.1==== | ||
- [http://www. | - [http://www.ps3devwiki.com/files/devtools/scetool/zlib1.dll zlib] is required to use scetool. | ||
- 'sdk_type' was changed to 'revision' in data/keys. | - 'sdk_type' was changed to 'revision' in data/keys. | ||
== OpenSCETool == | == OpenSCETool == | ||
https://github.com/spacemanspiff/oscetool | https://github.com/spacemanspiff/oscetool | ||
== NPDTool v4d == | == NPDTool v4d == | ||
http://mir.cr/1VI625HY | |||
npdtool v4d by belmondo and user ©2014 | |||
npdtool v4d by | |||
usage decrypt: npdtool [mode] infile outfile [rap/idps/klic] [act] [rif] | usage decrypt: npdtool [mode] infile outfile [rap/idps/klic] [act] [rif] | ||
Line 279: | Line 185: | ||
usage info: npdtool [mode] inNPD | usage info: npdtool [mode] inNPD | ||
[mode]: i (info) | [mode]: i (info) | ||
==SDATA Tool== | ==SDATA Tool== | ||
Small open source tool to unpack and decrypt SDATA files. All the hard work and reverse engineering done by Hykem, along with collaboration of AlexAltea and BlackDaemon. It supports all SDATA file variants: v1 to v4, compresed or uncompressed, debug or release SDATAs. | Small open source tool to unpack and decrypt SDATA files. All the hard work and reverse engineering done by Hykem, along with collaboration of AlexAltea and BlackDaemon. It supports all SDATA file variants: v1 to v4, compresed or uncompressed, debug or release SDATAs. | ||
Link | Link: https://github.com/AlexAltea/sdata-tool | ||
Usage: ''sdata-tool.exe <input> <output>'' | Usage: ''sdata-tool.exe <input> <output>'' | ||
Line 377: | Line 274: | ||
::usage: package_finalize my.pkg | ::usage: package_finalize my.pkg | ||
== Graf Chokolo Tools == | ==Graf Chokolo Tools== | ||
[http://github.com/grafchokolo/psgroove graftools] | [http://github.com/grafchokolo/psgroove graftools] | ||
[ | [http://www.ps3devwiki.com/index.php?title=Talk:Graf%27s_PSGroove_Payload Graftools] | ||
:sendfile | :sendfile | ||
:pcap2bin | :pcap2bin | ||
: | |||
== spkg tool 1.0 == | == spkg tool 1.0 == | ||
Line 548: | Line 447: | ||
=== ps3load 3.55 make_self fixed === | === ps3load 3.55 make_self fixed === | ||
* older versions of ps3load would '''not''' work on 3.50/3.55 (¨sysProcessExitSpawn2¨ won't work proper), and you had to use 3.41 instead. This is no longer an issue with the recent version ps3load which fixed the (make_self) issue for 3.55 | * older versions of ps3load would '''not''' work on 3.50/3.55 (¨sysProcessExitSpawn2¨ won't work proper), and you had to use 3.41 instead. This is no longer an issue with the recent version ps3load which fixed the (make_self) issue for 3.55 | ||
** standalone precompiled version to try: [http://www. | ** standalone precompiled version to try: [http://www.ps3devwiki.com/files/devtools/payloader3/ps3load.gnpdrm.pkg ps3load.gnpdrm.pkg (522.17 KB)] (don't forget to delete your old version first) | ||
The PKG will install to the harddrive (dev_hdd0/game/PS3LOAD04/) with ps3load added as icon to the XMB > Network category. | The PKG will install to the harddrive (dev_hdd0/game/PS3LOAD04/) with ps3load added as icon to the XMB > Network category. | ||
Line 642: | Line 541: | ||
=== Memdump === | === Memdump === | ||
<!--// also here | <!--// also here http://www.ps3devwiki.com/wiki/Software_Dumping#Memdump //--> | ||
<div style="float:right">[[File:Memdump-lv1 1280.png| | <div style="float:right">[[File:Memdump-main 1280.png|200px|thumb|left|Memdump - main screen]]<br />[[File:Memdump-about 1280.png|200px|thumb|left|Memdump - about screen]]<br />[[File:Memdump-help 1280.png|200px|thumb|left|Memdump - help screen]]<br />[[File:Memdump-lv1 1280.png|200px|thumb|left|Memdump - lv1 screen]]<br />[[File:Memdump-lv2 1280.png|200px|thumb|left|Memdump - lv2 screen]]</div> | ||
PS3 memory dumping tool that can dump lv1, lv2, NAND/NOR Flash, and eEID from GameOS. | PS3 memory dumping tool that can dump lv1, lv2, NAND/NOR Flash, and eEID from GameOS. | ||
{{#ev:youtube|_uqCxkNxXqo#t=98}} | |||
{{#ev:youtube|_uqCxkNxXqo}} | |||
* | ====Download==== | ||
* | * http://gitorious.ps3dev.net/memdump/memdump/trees/master | ||
* http://www.mirrorcreator.com/files/1BJ62WGD/memdump_0.01-FINAL.rar_links | |||
* http://www.ps3devwiki.com/files/devtools/dumpers/memdump_0.01-FINAL/ | |||
* http://www.embedupload.com/?d=3HH5KJGLY4 | |||
==== Applicable firmwares ==== | ==== Applicable firmwares ==== | ||
Line 668: | Line 560: | ||
! Logs !! Notes | ! Logs !! Notes | ||
|- | |- | ||
| style="background:lightgrey; color:#ff0000; text-align: center;" | <=2.60 | | style="background:lightgrey; color:#ff0000; text-align: center;" | <=2.60 CEX/Retail || {{NA}} || {{NA}} || {{NA}} || {{NA}} || rowspan="2" colspan="4" style="background:lightgrey; color:#ff0000; text-align: center;" | Not available as target version atm | ||
|- | |||
| style="background:lightgrey; color:#ff0000; text-align: center;" | <=2.60 DEX/Debug || {{NA}} || {{NA}} || {{NA}} || {{NA}} | |||
|- | |||
| style="background:Green; color:#ffffff; text-align: center;" | 2.70 CEX/Retail || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | |||
|- | |||
| style="background:Green; color:#ffffff; text-align: center;" | 2.70 DEX/Debug || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | |||
|- | |||
| style="background:Green; color:#ffffff; text-align: center;" | 2.76 CEX/Retail || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | |||
|- | |||
| style="background:Green; color:#ffffff; text-align: center;" | 2.76 DEX/Debug || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | |||
|- | |||
| style="background:Green; color:#ffffff; text-align: center;" | 2.80 CEX/Retail || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | |||
|- | |||
| style="background:Green; color:#ffffff; text-align: center;" | 2.80 DEX/Debug || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | |||
|- | |||
| style="background:Green; color:#ffffff; text-align: center;" | 3.00 CEX/Retail || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | |||
|- | |||
| style="background:Green; color:#ffffff; text-align: center;" | 3.00 DEX/Debug || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | |||
|- | |||
| style="background:Green; color:#ffffff; text-align: center;" | 3.01 CEX/Retail || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | |||
|- | |||
| style="background:Green; color:#ffffff; text-align: center;" | 3.01 DEX/Debug || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | |||
|- | |||
| style="background:Green; color:#ffffff; text-align: center;" | 3.10 CEX/Retail || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | |||
|- | |||
| style="background:Green; color:#ffffff; text-align: center;" | 3.10 DEX/Debug || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | |||
|- | |||
| style="background:Green; color:#ffffff; text-align: center;" | 3.15 CEX/Retail || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | |||
|- | |||
| style="background:Green; color:#ffffff; text-align: center;" | 3.15 DEX/Debug || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | |||
|- | |- | ||
| style="background:Green; color:#ffffff; text-align: center;" | | | style="background:Green; color:#ffffff; text-align: center;" | 3.20 DEX/Debug || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | ||
|- | |- | ||
| style="background:Green; color:#ffffff; text-align: center;" | | | style="background:Green; color:#ffffff; text-align: center;" | 3.21 CEX/Retail || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | ||
|- | |- | ||
| style="background:Green; color:#ffffff; text-align: center;" | | | style="background:Green; color:#ffffff; text-align: center;" | 3.21 DEX/Debug || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | ||
|- | |- | ||
| style="background:Green; color:#ffffff; text-align: center;" | 3. | | style="background:Green; color:#ffffff; text-align: center;" | 3.30 CEX/Retail || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | ||
|- | |- | ||
| style="background:Green; color:#ffffff; text-align: center;" | 3. | | style="background:Green; color:#ffffff; text-align: center;" | 3.30 DEX/Debug || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | ||
|- | |- | ||
| style="background:Green; color:#ffffff; text-align: center;" | 3. | | style="background:Green; color:#ffffff; text-align: center;" | 3.40 CEX/Retail || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | ||
|- | |- | ||
| style="background:Green; color:#ffffff; text-align: center;" | 3. | | style="background:Green; color:#ffffff; text-align: center;" | 3.41 CEX/Retail || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | ||
|- | |- | ||
| style="background:Green; color:#ffffff; text-align: center;" | 3. | | style="background:Green; color:#ffffff; text-align: center;" | 3.41 DEX/Debug || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | ||
|- | |- | ||
| style="background:Green; color:#ffffff; text-align: center;" | 3. | | style="background:Green; color:#ffffff; text-align: center;" | 3.42 CEX/Retail || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | ||
|- | |- | ||
| style="background:Green; color:#ffffff; text-align: center;" | 3. | | style="background:Green; color:#ffffff; text-align: center;" | 3.50 CEX/Retail || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | ||
|- | |- | ||
| style="background:Green; color:#ffffff; text-align: center;" | 3. | | style="background:Green; color:#ffffff; text-align: center;" | 3.50 DEX/Debug || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | ||
|- | |- | ||
| style="background:Green; color:#ffffff; text-align: center;" | 3. | | style="background:Green; color:#ffffff; text-align: center;" | 3.55 CEX/Retail || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | ||
|- | |- | ||
| style="background:Green; color:#ffffff; text-align: center;" | 3. | | style="background:Green; color:#ffffff; text-align: center;" | 3.55 DEX/Debug || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || | ||
|- | |- | ||
| 3.56 CEX/Retail || {{Pending}} || {{Pending}} || {{Pending}} || {{Pending}} || | |||
|- | |- | ||
| 3.56 DEX/Debug || {{Pending}} || {{Pending}} || {{Pending}} || {{Pending}} || | |||
|- | |- | ||
| 3. | | style="background:lightgrey; color:#ff0000; text-align: center;" | =>3.60 CEX/Retail || {{NA}} || {{NA}} || {{NA}} || {{NA}} || rowspan="2" colspan="4" style="background:lightgrey; color:#ff0000; text-align: center;" | Not available as target version atm | ||
|- | |- | ||
| style="background:lightgrey; color:#ff0000; text-align: center;" | =>3.60 | | style="background:lightgrey; color:#ff0000; text-align: center;" | =>3.60 DEX/Debug || {{NA}} || {{NA}} || {{NA}} || {{NA}} | ||
|- | |- | ||
|} | |} | ||
===== Legenda ===== | ===== Legenda ===== | ||
* NA : Not Available as target version (mostly because of missing lv1:mmap114 or lv2:peek/poke patches) | * NA : Not Available as target version (mostly because of missing lv1:mmap114 or lv2:peek/poke patches) | ||
Line 726: | Line 647: | ||
=== flash dumper === | === flash dumper === | ||
precompiled: | precompiled: | ||
* [http://www. | * [http://www.ps3devwiki.com/files/flash/Tools/USB%20Flash%20Dump/dump_flash.pkg dump_flash.pkg (70.48 KB)] | ||
<!--// * [http://www.multiupload.com/2V5J0MHF4F dump_flash-faster.pkg (70.23 KB)] not faster, old bugged version that also dumps vflash on NOR consoles //--> | <!--// * [http://www.multiupload.com/2V5J0MHF4F dump_flash-faster.pkg (70.23 KB)] not faster, old bugged version that also dumps vflash on NOR consoles //--> | ||
:NOR flash - dump will take about 30 minutes<!--// 30mins and 20 secs ~9 KB/sec //-->, size: 16 MB (1 file: flash.bin) | :NOR flash - dump will take about 30 minutes<!--// 30mins and 20 secs ~9 KB/sec //-->, size: 16 MB (1 file: flash.bin) | ||
Line 737: | Line 658: | ||
* [http://foxbrew.org/git/otheros-utils/dump_flash.git/ dump_flash.git] | * [http://foxbrew.org/git/otheros-utils/dump_flash.git/ dump_flash.git] | ||
* [http://foxbrew.org/git/otheros-utils/dump_flash_ptab.git/ dump_flash_ptab.git] | * [http://foxbrew.org/git/otheros-utils/dump_flash_ptab.git/ dump_flash_ptab.git] | ||
* [http://www. | * [http://www.ps3devwiki.com/files/flash/Tools/USB%20Flash%20Dump/dump_flash-src.rar dump_flash-src.rar] | ||
=== lv1 dumper === | === lv1 dumper === | ||
Line 769: | Line 690: | ||
git source: | git source: | ||
* [http://foxbrew.org/git/otheros-utils/dump_sysrom.git/ dump_sysrom.git] | * [http://foxbrew.org/git/otheros-utils/dump_sysrom.git/ dump_sysrom.git] | ||
=== vflash dumper === | === vflash dumper === | ||
Line 787: | Line 700: | ||
* [http://www.multiupload.com/IBF5XTDFWP vshDumper.rar (25.29 KB)] ([[User:Daxgr]])<br /> | * [http://www.multiupload.com/IBF5XTDFWP vshDumper.rar (25.29 KB)] ([[User:Daxgr]])<br /> | ||
:([http://pastie.org/private/lbv2vc50spgjx816mahfa IDA analysis of sacd.sprx]) | :([http://pastie.org/private/lbv2vc50spgjx816mahfa IDA analysis of sacd.sprx]) | ||
== dev_flash and dev_flash3 unpacker == | == dev_flash and dev_flash3 unpacker == | ||
Line 828: | Line 735: | ||
it will show useful informations, built initially for vita pkgs<br /> | it will show useful informations, built initially for vita pkgs<br /> | ||
To build it, just run make.<br /> | To build it, just run make.<br /> | ||
[http://gitorious.ps3dev.net/playstation-3/ps3tools SRC | [http://gitorious.ps3dev.net/playstation-3/ps3tools SRC] | ||
Line 888: | Line 795: | ||
http://www.mediafire.com/?rv6jajz3nfy53iw | http://www.mediafire.com/?rv6jajz3nfy53iw | ||
== ReactPSN .rap | ==ReactPSN .rap -> .rif converter== | ||
This tool will convert .rap files to .rif. Place it to the ps3tools directory along with other tools and then place your idps and act.dat files to appropriate folders.<br /> | |||
This tool will convert .rap files to .rif. Place it to the ps3tools directory along with other tools and then place your idps and act.dat files to appropriate folders. | http://www.mediafire.com/?sgxq5r7twy9907d | ||
::usage: rap2rif <rap file> <rif file> | ::usage: rap2rif <rap file> <rif file> | ||
==ReactPSN .rif -> .rap converter== | ==ReactPSN .rif -> .rap converter== | ||
Line 907: | Line 810: | ||
http://www.mirrorcreator.com/files/SGL6EZCS/rif2rap.rar_links | http://www.mirrorcreator.com/files/SGL6EZCS/rif2rap.rar_links | ||
== .rifkey | ==ReactPSN .rifkey -> .rap converter== | ||
This tool will convert rifkey files to .rap <br /> | |||
This tool | The usage:<br /> | ||
rifkey2rap <rif key file> <rap file> | |||
rifkey2rap < | [http://mir.cr/1QRV777I Bin+Source] / [http://pastie.org/private/9hjpnaewxg5twytosnx4w Source]<br /> | ||
== Metldr extractor == | == Metldr extractor == | ||
Line 940: | Line 832: | ||
* http://www.reflector.net/ | * http://www.reflector.net/ | ||
== SPRXPatcher == | == SPRXPatcher == |