72w ago - Following up on his
previous work, this weekend PlayStation 3 developer
deroad has released a PS3 SFO Reader and SFO2SFX homebrew applications complete with source code.
Download:
PS3 Tools Deroad SFO to SFX
To quote: Since today
sandungas talked about a bug in the old SFO Reader, i immediately fixed it (you can find it here: ps3devwiki.com/wiki/Dev_Tools#SFO_Reader).
Then he started talking about SFX. They are simple XML files that the ps3 can read as SFO. This is an example:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<paramsfo add_hidden="false">
<param key="ATTRIBUTE" fmt="int32" max_len="4">0</param>
<param key="CATEGORY" fmt="utf8" max_len="4">IP</param>
<param key="PARENTAL_LEVEL" fmt="int32" max_len="4">2</param>
<param key="TITLE" fmt="utf8" max_len="128">Beat Sketcher™</param>
<param key="TITLE_05" fmt="utf8" max_len="128">Beat Sketcher™ A mano libera</param>
</paramsfo>
So i converted my SFO reader into a SFO to SFX converter. You can get it here: ps3devwiki.com/wiki/Dev_Tools#SFO2SFX
I hope that someone will find it useful. From:
[SFO HDR] 0x00505346
[SFO Version] 0x00000101
[SFO N] 6 Value(s)
[SFO Params Offsets] 0x000000b4
[ SFO ]
[ 1 ] CATEGORY | Param: 2D
[ 2 ] PARENTAL_LEVEL | Param: 0x1
[ 3 ] PS3_SYSTEM_VER | Param: 01.3100
[ 4 ] TITLE | Param: PS2 System Data
[ 5 ] TITLE_ID | Param: NPIA00001
[ 6 ] VERSION | Param: 01.00
to
<?xml version="1" encoding="utf-8" standalone=yes"?>
<paramsfo add_hidden="false">
<param key="CATEGORY" fmt="utf8" max_len="4">2D</param>
<param key="PARENTAL_LEVEL" fmt="int32" max_len="4">1</param>
<param key="PS3_SYSTEM_VER" fmt="utf8" max_len="8">01.3100</param>
<param key="TITLE" fmt="utf8" max_len="128">PS2 System Data</param>
<param key="TITLE_ID" fmt="utf8" max_len="16">NPIA00001</param>
<param key="VERSION" fmt="utf8" max_len="8">01.00</param>
</paramsfo>
Finally, how to call a PS3 Syscall: In computing, a system call (aka Syscall) is how a program requests a service from an operating system’s kernel. This may include hardware related services (e.g. accessing the hard disk), creating and executing new processes, and communicating with integral kernel services (like scheduling). System calls provide the interface between a process and the operating system.
With PSL1GHT we can call all the 989 Syscalls.. it’s really simple to call one, but you need to know how many parameters it needs; there are some syscalls that needs just 1 parameter, there are others that needs 8 parameters.
You can find the list of syscalls with the numbers of the parameters here: ps3devwiki.com/wiki/LV2_Functions_and_Syscalls#Syscalls
Once you know the numbers of the parameter that you need (and the type of the parameters if they are written), you are ready to call one:
first thing add the following include:
#include
Then you can call the syscall:
lv2syscallN(number_of_the_syscall, parameters… );
Change N with the number of the parameters, and put the number of the syscall that you need to call with the parameters.
some examples:
Shutdown the PS3:
1) Look into the dev wiki and you will see that the syscall to shutdown the PS3 is number 379 ( sys_sm_shutdown ) and it wants 4 parameters:
2) So now i can call the syscall with 4 parameters:
lv2syscall4(379,SHUTDOWN_PARAM,0,0,0);
now on the wiki it says, that the shutdown value is 0x1100 or 0x100, so i will write:
lv2syscall4(379,0x100,0,0,0)
now if i call this on a stupid homebrew like:
#include
int main(){
lv2syscall4(379,0x100,0,0,0);
return 0;
}
it will really shutdown the ps3.
now if you are not sure to completely understood this, i will make another example:
Get current time:
now this example comes from the PSL1GHT SDK:
this is the function that get the current time on the ps3.
#include
s32 sysGetCurrentTime(u64 *sec,u64 *nsec)
{
lv2syscall2(145,(u64)sec,(u64)nsec);
return_to_user_prog(s32);
}
now it uses 2 parameters so it calls lv2syscall2, then it needs the parameters that will get the value sec and nsec. now, in this function you can see that it ask the return of this syscall; to call any return of a determinate syscall, you can simply ask it by calling:
return_to_user_prog(type_of_the_variable);
you need to define the type of the returning variable. in that case it was s32 (aka signed int).
so it calls:
return_to_user_prog(s32);
if it was a normal integer, you had to call:
return_to_user_prog(int);
to compile it correctly you need to simply add the following flags:
-llv2
Download: https://www.dropbox.com/s/qsaczaxuvyr13gj/Install_Package.pkg / https://www.dropbox.com/s/03r0chasu453l5i/Install_Package.geohot.pkg / https://www.dropbox.com/s/95gvav70wpme7x6/Install_Package.1.2.pkg / https://www.dropbox.com/s/zg1ugwbuiytrgxv/Install_Package.gnpdrm.1.2.pkg / https://github.com/wargio/InstallPackageHomebrew/archive/master.zip / https://github.com/wargio/InstallPackageHomebrew
To quote: Hi everyone, since I'm working on PSChannel (I don't know when it will be finished), I had to build a few features for it (I will not tell which they are). so I written this simple homebrew to install one or more PKG without using the XMB option. this app is useful if you, for some reason, can't use that option.. it will create on the XMB a new icon that will allow you to install that pkg.
How to use it:
Place in the main directory of your USB a pkg (it can handle up to 100 pkgs, and the max size for each of them is 4GB).. then plug in the usb on the ps3 and run the app.
It will search the usb from /dev_usb000 to /dev_usb009, once found it will start it copy and create the right files to allows you to install it from the XMB without the option.
THIS APP WILL RESTART THE PS3 ONCE FINISHED. I hope that this app can be useful (maybe also someday).
v1.2 Changelog:
This new version allow to install packages also from the /dev_hdd0/package folder, just not plug in any USB and it will search in that directory.
Update: Install Package Homebrew Source Code (via devram0.blogspot.co.at/2012/11/install-package-homebrew-source-code.html) from https://twitter.com/Wargio/status/271654228471197697:
I decided to release my source code (linked above) of this homebrew. to compile it, you will need PSL1GHT V2.
if you want to copy partially or entirely the code, please, add me on the credits. Have fun.
More PlayStation 3 News...
Download: http://aldostools.org/temp/PS3_Cheats_Editor_installer.exe / http://www.sendspace.com/file/ym4cob by gingerbread
To quote: Some features...
Read/save cheats database for ps3usercheat (st.dat)
Search/filter games
Sort database by column (Title ID, Name, Version, number of cheats, region) (database is saved in the selected order)
Added option to rearrange the position of the games in the list (use Alt+Up arrow / Alt+Down arrow in the listview)
Exports selected games as text files
Imports text file (exported format) and append to current database
Allows to save the description in TITLE ID + NAME + VERSION (without < > and region)
It accepts the file as a command line parameter (useful to open through batch files or associate extensions)
Support for drag & drop
Lots of keyboard shortcuts
The tool keeps internally the version read from the file. If you edit a game's title, you will notice that it includes the version (from the description). The program will parse the edited text and will search for ##.## (eg. 01.05). If it is found, it stores 01 05 in the database. If the pattern ##.## is not found, it will use 01.00 by default So, it's important to always include the version in the game's description.
That was exactly the part that deank helped me to figure out. BTW I updated the icon for the PSN games in the program.
Build 1.4:
0- The import now merges the cheats. So if user A has 3 cheats, and user B has 2 cheats (1 common, 1 different). User A imports cheats from B (or B imports cheats from A), in both cases the database should contain 4 cheats.
1- Added extension .ps3cheat
2- Added a suggested name for export
3- Use F2 to edit individual cheat title
4- The OCX is required. I could remove it, but it would be a lot of work, due I would have to program all the functions of the OCX. You can make a SFX and put the OCX and the EXE, the EXE will automatically register the OCX.
5- TXT format can be used for that
6- Fixed the window title (it said PS3 Game Editor instead of PS3 Cheats Editor)
Changelog:
PS3 Cheats Editor 2.6.2:
Edits the cheats database for ps3usercheat (st.dat). Allows export/import cheats to the database in text and binary formats. 3.55 CFW is required.
Now the cheats compatible with the EBOOT hack can be identified easily. This version includes a cheats database for 520 games compiled by gingerbread at ps3hax and a link to his discussion thread. Thanks to SkillerCMPnow the EBOOT patcher supports code type: 0T00 (8bit), 1T00 (16bit), 2T00 (32bit), 4T00 (Serial codes), 5T00 (Copy codes)
Special thanks to skillerCMP, gingerbread, BahumatLord, haxxxen and bungholio for the tutorial about converting CU codes.
Build 2.2.0.1:
This version includes a cheats database for 414 games compiled by gingerbread at ps3hax and a link to his discussion thread.
Build 2.1.0.3:
This version includes a cheats database for 409 games compiled by gingerbread at ps3hax and a link to his discussion thread.
Build 2.1.0.1:
Support info files in .pdf, .tif, .rtf, .html and .txt
Build 2.0.2:
This version includes a database with 381 games compiled by gingerbread at ps3hax and a link to his discussion thread.
Build 1.5.02:
I updated the tool to install the st.dat. So, it is not longer required to extract it from the PKG
Build 1.5:
There was an issue importing the games that started with "PSN" and I fixed the bug in the build 1.5
If you find bugs, they are also features. This is a sample code for Dragon's Dogma BLES01356. All credits go to xtatu at the CMP Forums
M) Enabler code
00000100 424C4553 01356018
DAMAGE 0 PLAYER
00002000 008BFC44 00000000
From haxxxen: Here are some new codes (credits to cmp staff and users, i only have ported the codes)
-------------------------------
BLES01402 01.00
-------------------------------
Max Souls
00002000 00AF0FC4 3D403E80
0 Damage (Player & Enemy)
00002000 0199C790 60000000
00002000 0199C79C 60000000
Max Equipment Load
00002000 0199C71C 49499000
Max Stats
00002000 0199C76C 49000000
Max Items on Use/Discard/Buy/Deposit in Storage
00002000 00BC3A68 60000000
Infinite Magic/Miracles/Pyromancy Slot #1
00002000 00BCC2B4 30A90004
Infinite Magic/Miracles/Pyromancy Slot #2
00002000 00BCC2F4 30A90004
Infinite Magic/Miracles/Pyromancy Slot #3
00002000 00BCC334 30A90004
Infinite Magic/Miracles/Pyromancy Slot #4
00002000 00BCC374 30A90004
Infinite Magic/Miracles/Pyromancy Slot #5
00002000 00BCC3B4 30A90004
Infinite Magic/Miracles/Pyromancy Slot #6
00002000 00BCC3F4 30A90004
Infinite Magic/Miracles/Pyromancy Slot #7
00002000 00BCC434 30A90004
Infinite Magic/Miracles/Pyromancy Slot #8
00002000 00BCC474 30A90004
Infinite Magic/Miracles/Pyromancy Slot #9
00002000 00BCC4B4 30A90004
Infinite Magic/Miracles/Pyromancy Slot #10
00002000 00BCC4F4 30A90004
Fly Mode (useless)
00002000 0199B188 34000001
----------------------------------------------------
BLES01251 01.00
----------------------------------------------------
Max Gold on Gain/Sell
00002000 0002A878 33FE034C
-----------------------------------------
BLES01342 01.00
-----------------------------------------
Max Money on Gain/Sell
00002000 00467B74 60000000
-----------------------------------------
BLUS30565 01.00
-----------------------------------------
No Hit (Player)
00002000 00AD6330 4082001C
Faster Game Speed
00002000 007511A8 3FF00000
More PlayStation 3 News...
Also from aldostools: I have updated my PS3 Tools
In this version I moved all the tools to a "tools" folder. Just run the PS3 Tools Menu.exe. The titleid and md5 databases are updated.
The "PKG ContentID" application now acts as a hub for various tasks from Windows Explorer:
Double click on a PUP to view its content using ifcaro' PUPView
Double click on a PKG to view its content using ifcaro' PKGView
Double click on a BIN, SELF or SPRX to view the info using scetools
Ctrl+Enter on a BIN, SELF or SPRX to resign the file using scetools (includes 3.60 keys)
Shift+Enter on a PKG to extract the PKG
Ctrl+Enter on a PKG to view the PKG Content ID
Shift+Ctrl+Enter on a PKG to repack a retail PKG as debug PKG - useful for DEX users.
Right click on a PKG and select Make PKG to create a PKG.
Almost all the tools now return to the menu clicking on the right-top blue icon
Added drag & drop support to Create PS3_EXTRA and PS3RIP. PS3 Game Updates is included in the zip.
Download: http://www.aldostools.org/ps3tools.zip
Note: if you need to use your own batch to resign the EBOOTs, create a file named "custom_eboot_fix.bat" in the folder of scetool.
I programmed a FixELF.exe (16kb) that does the hex replace (same as binmay - freecode.com/projects/binmay). But it is specialized for this this task
I just integrated it to my PS3 Tools, so to resign an EBOOT.BIN just double-click on it hodling Ctrl (or press Ctrl+Enter on it) and it makes a resigned EBOOT.BIN and EBOOT.BIN_ORIGINAL
It is required to run once the PKG ContentID.exe to associate the files.
Quick Tutorial for Converting PS3 3.60 Games to 3.55 Using PS3 Tools:
I. -- Preparation --
1- Download the ps3tools and install it
2- Run PARAM.SFO Editor and close it (this register the SFO extensions to Windows)
3- Run PKG Content ID and close it (this will register the EBOOT, self, sprx to Windows)
(you may need to copy the ps3 keys and the cygwin files requied by psn_package_npdrm to the ps3tools\tools)
II. -- Fixing a 3.60 disc game --
4. Open the GAMES\title name\PS3_GAME and double click on the PARAM.SFO
5. Press alt+y (PS3 System) and press down to set the version to 3.55
6. Press Ctrl+S to save the SFO and close the window
7. Open USRDIR and browse the folders to see if the are .self or .sprx
a. If you find a .self or .sprx, double click on it to view if it is using [3.60-3.61 keys]
b. If there are not .self or .sprx, press Ctrl+Enter on the EBOOT and you're ready to play
c. If there are .self or .sprx, copy the EBOOT.BIN and all the .self/.sprx files to the scetool folder in PS3 Tools and run the BruteForce.exe
d. If the keys are found, the BruteForce will resign the EBOOT.BIN and self/sprx
e. Copy the resigned EBOOT.BIN and self/sprx to their original location and play
III. -- Fixing a 3.60 patch PKG --
8. Run PS3 Game Update from the PS3 Tools Menu, enter the title id of the game, set the target version to 3.60 and press Verify
9. Download the PKG files that are 3.60 or lower
10. Once the download complete, double click again the completed file to open the folder
11. Press Shift+Enter on the PKG to extract all the files
12. Browse to the extracted folder\TITLEID and double click on the PARAM.SFO. Change the PS3 System to 3.55, press Ctrl+S and exit
13. Browse to USRDIR and repeat the all the steps in 7 (resign the 3.60 to 3.55)
14. Once you have resigned the files to 3.55 and copied them back to the extracted folder, browse up to the extracted folder. eg. UP0002-BLUS30591_00-CODBLOPSPATCH012-A0113-V0100-PE
15. Right click on the folder and select Make PKG
16. Install the PKG and play
Fixed bug: 'error 70 - access denied' on Windows 64bit
Fixed bug: 'stop download if game folder is collapsed'
Fixed bug: 'Verify button disabled pasting text with mouse'
Fixed bug: 'Verify button disabled pasting text in lower case'