-
Notifications
You must be signed in to change notification settings - Fork 38
Home
Welcome to uOFW - the project of reverse engineering the entire PSP kernel.
Its purpose is to provide an entirely free and open-source PSP firmware, based on the official one, so we can fully understand how the PSP works, and so we can do whatever we want with it.
Our goal is not to improve the current firmware. Instead, we aim to create a 100% vanilla firmware on which some other project (i.e a PSP emulator, PSP custom kernel) could base its work on to make its own modifications.
As the PSP uses a MIPS processor, we reverse engineer code compiled into the MIPS Assembly Language. Check out our MIPS page for information about MIPS.
A doxygen documentation can be found right here. It is generated automatically after a change was committed to the master branch. The documentation is intended for developers using the PSP SCE API.
A general documentation about the PSP system, its hardware components and its system software can be found here.
If you wish to contribute to the uOFW project, there are some steps to follow. Note that you don't even need to own a Playstation Portable to work with us.
-
First, you will need to learn how to reverse engineer a module. Read the Reverse Engineering Tutorial at least twice.
-
Next, choose a module (firmware 6.60) from the Current Modules Status page. Pick a small module if it is your first reverse.
-
Fork this repo and create a topic branch to put your work in. Send us a pull request once your module is finished. If you need help, come to ask us @ irc.freenode.net#uofw.
Happy reversing!
The PSP linking process is a bit particular, and when you build module A requiring functions from the library SuperLibB of module B (if it's missing the libSuperLibB.a
in lib/
) you need to:
- make an exports.exp file for the module B (the
prxtool
tool with the-p
flag can generate it automatically for you from an existing module from the official firmware) and place it insrc/<module B>
- make a static library out of it, which contains the stubs, using
cd src/<module B> && make -f ../../lib/build.mak exp
- move the static library/ies (there can be several libraries for one module!), ie the
.a
files (in our examplelibSuperLibB.a
), to thelib/
directory at the root of the project - then, in module A, add
LIBS = -lSuperLibB
, and you're good to go!