eLoader v1.000
(the "IPA" release)
by Noobz!
(based on excellent groundwork by Saotome)
 
Official Resources
Introduction
NOTE : UNLIKE PREVIOUS VERSIONS, THIS VERSION OF ELOADER IS INTENDED SOLELY FOR LAUNCHING TRICKY EBOOTs ON PSPs THAT ARE ALREADY CAPABLE OF RUNNING HOMEBREW (i.e. VIA CUSTOM FIRMWARES AND HOMEBREW ENABLERS). SUPPORT FOR LAUNCHING VIA EXPLOITS IS NOT INCLUDED IN THIS RELEASE.
This program builds on the original work done by Saotome to load homebrew
EBOOT.PBPs into PSPs with HEN or Custom Firmware (CFW). Although HEN and CFW
can generally load most modern homebrew, eLoader offers a way to
improve compatibility with older programs.
eLoader is of most use for PSP Lite owners running CFW. This loader will allow them to run homebrew based on 1.50 kernel which otherwise would not be able to run due to the incompatibility of the PSP Lite and the 1.50 kernel.
Since eLoader will also run in any CFW it will be also useful for those developers not having a PSP Lite and wanting to check that their code will run on it.
It currently cannot run all known homebrew, but it uses a number
of tricks to get substantially further than ever before.
Known limitations are:
- Can't run most kernel-mode applications.
- That means anything that emulates ISOs/UMDs.
- Some minor system calls are still unsupported.
It's also still very much in development, so you should expect
a few bugs, and for not every EBOOT to run perfectly. An
up-to-date list of known working EBOOTs can be found at the
homebrew database listed above.
Major new features in this release
Added support for HEN and custom firmwares including the PSP Lite.
Details of Kernel Mode Support
In eloader 1.000 it is possible to make use of kernel mode
using "constructor" procs, this therefore gives the ability to
patch kernel memory before the user mode thread starts (in the
same way that firmware v1.5 can)
The main thing that you can not do at the moment is start a new
thread in kernel mode. Note that this is the same level of kernel-mode
support as the 0.995 release. We intend to dramatically improve
kernel-mode compatibility in future releases.
TERMS OF USE
This software is made available for use as-is, without any
guarantee of usability, safety, fitness for purpose etc. We've
taken all reasonable precautions to ensure that it cannot
damage your PSP, but cannot be held responsible for any damage
caused.
You are not permitted to sell this software. If you paid money
for this program (most often through eBay), you should demand a
refund of your payment, and report the seller to the appropriate
authorities.
This program is not intended to aid piracy of any form. Use for
piracy is strictly forbidden - we want to support software
developers, not steal from them.
To install eLoader
Copy the contents of the MS_ROOT folder to the topmost folder on
your PSP memory stick. If you've done this correctly, you will end up with
a set of files within the folder
/PSP/GAME/eLoader
on your memory stick.
Installing Homebrew
If you've chosen to install Installotron, then you can automatically
download and install a selection of popular homebrew to your PSP, so
long as you have a network connection configured on your PSP. Just
run eLoader as described below, and then select and run Installotron,
to select the homebrew programs to install.
Otherwise, or if the homebrew you want to use is not supported by Installotron
yet:
Copy the homebrew you want to run to your memory stick.
Usually, this means unzipping a directory that contains an
EBOOT.PBP file to somewhere under /PSP/GAME/. The exact
location and folder name usually doesn't matter, but for best
compatibility you should try to use the same names as
originally shown in the homebrew ZIP file.
If the instructions with the homebrew contain separate steps
for v1.0 and v1.5 firmwares, then usually you'll get best
results by following the v1.0 instructions.
NOTE: If the homebrew is written in LUA, you need to copy it
to a subdirectory under the your LUA Player "APPLICATIONS"
folder.
Running eLoader : via HEN and Custom Firmwares
In order to run eLoader just goto to the "Game" menu on the PSP menu, then "Memory Stick", then select the "eLoader IPA" program.
This will cause eLoader to load up its menu ("eMenu") from which you can choose the homebrew you would like to load.
Using eMenu
Using a different menu
v1.000 of the loader ships with a default menu, emenu--.pbp.
It's also possible to install optional alternative menus, such as 'Choice'.
The loader will use emenu--.pbp menu by default. If
you want to use one of the alternatives, then edit the
loadmenu1000.cfg file (with Notepad, or any other text editor),
and change the following line:
menu=ms0:/psp/eloader/emenu--.pbp
to point at the location of the alternative menu's .PBP file.
Troubleshooting
If you have problems with an individual EBOOT getting to the
"Press X to launch the program" screen, but crashing
immediately after, here are a few things to try:
- Check whether it is already on the list of non-working EBOOTs
at www.psp-homebrew.eu.
- Make sure you are trying to run it as the first thing you do
after a clean reboot of your PSP
- Use v1.0 EBOOTs in preference to v1.5.
- Make sure that you read any README supplied with the
homebrew, and followed the installation instructions (for
v1.0, preferably) carefully.
- Make sure that any support files (e.g. WAV files, graphics
files) contained in the ZIP file are copied into the same
place on the memory stick, relative to the EBOOT file.
- Experiment with the launcher options in the configuration
file. (see below)
- Check the forums at pspupdates.com or noobz.eu - someone might already
have found a way to make this EBOOT work.
- If you see a message during the loading process, saying
"Found suspicious hard path", then this means the loader
detected that the application depends upon being in a
specific location on the memory stick. Usually the path will
mention a specific file - try moving the application folder
so that the file is in the place shown.
If you find that one of these steps helps, then please send us
details on what you did to make the EBOOT work - we can build
the workarounds automatically into the next version of the
loader.
NOTE: If the eLoader aborted the process before reaching the
"press X" screen, then don't bother trying these steps -
there's no way that EBOOT will currently work, but please
remember to send the details of the error message to me, so
that I can attempt to change the code to make it work.
Configuration File
v0.8.5 and beyond of the loader support configuration via a
file, /psp/game/eloader/LOADER1000.CFG. See inside the file for
basic details on what the various options do. For most
purposes, the defaults should be sufficient.
If you want to try to tweak the options for a specific EBOOT,
here are some pointers:
- Each EBOOT has a special signature that identifies it to the
eLoader. To find out the signature, use the bundled Windows
program "EBOOT_SIGNATURE.EXE". This will tell you the name
you need to use for the config file section header for the
EBOOT.
- The following options are the most common ones to change to
make a specific EBOOT work. Often, changing one of these
(more-or-less at random) will fix the more sensitive EBOOTs
such as USER_LUA. Try changing these one at a time, in this
order, for best results.
- passparameters
- confirm
- callinit
- clearscreen
- initbssfull
- initbsspartial
- If you want to suppress screen-spam during loading of a
known-good EBOOT, you can try changing these options. You
may find that the EBOOT stops working after changing an
option - if so, just change it back.
confirm | displays the 'press X to start' menu. |
unknownNIDwarning | warns you if some system calls
requested by the EBOOT couldn't be
identified. |
patchkernelwarning | warns you if the EBOOT is
kernel-mode. For some EBOOTs, this
doesn't matter. |
ignorefixedpath | warns you if the EBOOT contains a
suspicious- looking filename, that
implies it might need to be run
from a fixed location on the memory
stick. |
If you find some new configuration parameters that work well
for a specific EBOOT, please email us at homebrew@noobz.eu,
or make a post on the eLoader forums at forums.noobz.eu.
Future plans
Please see the "Work In Progress" page at www.noobz.eu.
If you find some new homebrew that either does or doesn't work
on your PSP, then please consider adding your results to the
PSP homebrew database at www.psp-homebrew.eu. Anyone with
a free account there is able to add to the data, and it's
a great way of checking whether other people have been able
to run particular homebrew on a similar PSP setup to yours.
Acknowledgements
This app wouldn't have been possible without the toc2rta TIFF
exploit code, or Saotome's hard work on the first beta EBOOT
loader, or the support of the fantastic folks at the ps2dev.org
forums (especially Groepaz's list of NID -> syscall mappings,
and Vampyre's continuing efforts to expand that list). And later,
of course, the TIFF exploit that opened up access to homebrew
on v2.0-v2.8 - thanks to psp250, Skylark, NOPx86, Jim Paris,
Chris Swindle, joek2100 and Fanjita for that.
Thanks to Edison Carter (and later Jim Paris and psp123) for
the development of the GTA savegame exploit, which made
homebrew possible on v2.01+.
More thanks to hitchhikr, for the LoadExec kernel mode exploit,
which we rely on for v2.70 and v2.71 support.
Thanks to Alex Richter for Installotron development.
Thanks to all the forum mods at PSPUpdates.QJ.net, and
operators in the #fanjita IRC channel, for supporting all the
questions from eLoader users. Special thanks to Serideth and Wakaru, who
seem to never sleep.
Thanks also to the many beta testers for their hard work beta
testing, as well as many other individual email contributions
with information on which EBOOTs are working.
If you have found this program useful and want to encourage
further development, please consider donating a small amount
via paypal to donations@noobz.eu.
Change history
- v1.000 : Support for HEN and Custom Firmwares
- Added support for launching via HEN and custom firmwares, including the PSP Lite.
- v0.9.9.5 : Support for FW v2.80, XMB loading
- v2.80 user-mode syscall resolution added
- experimental XMB loading, firmware 2.80 only for now
- suspend mode now supported for v2.5 - v2.80
- PSP on-screen keyboard functions now supported.
- improved compatibility for TIFF mode on other firmwares, now
TIFF mode should be as good as GTA mode.
- Installotron now bundled with eLoader, to make it easier for beginners
to install homebrew.
- v0.9.9 : TIFF homebrew support on FW v2.70 - v2.71
- 2.00 - 2.71 support
- Limited kernel mode (any "constructor" sections will run under
kernel mode) to allow patching of kernel memory, it works using
the standard pspsdk method
- Exception handling, so now when a game crashes the developer
will be able to determine why which should help to improve
stability of games for eloader
- new menu API
- v0.9.8 : TIFF homebrew support on FW v2.01 - v2.60
- Added support for the new TIFF exploit. Support for v2.7+ is
still a work-in-progress.
- v0.9.7 : Wifi for all
- Add dynamic wifi loading support: automatically
determines whether your application requires wifi, and
loads the correct libraries.
- Added config parameter to control warning if wifi can't
be loaded.
- Added config parameter to control code relocation (might
help some apps)
- Added memory stick scan-caching in the menu.
- v0.9.6 : Configurability, Infra-Red
- Support SIRCS infra-red (GTA only)
- Added config option to use old memory manager code
(might help some apps)
- Added config option to limit thread stack sizes (helps
some apps)
- Moved config option to clear RAM after menu on a
per-EBOOT basis
- Moved config option to delete user-main thread on a
per-EBOOT basis
- Moved config option to delete system threads on a
per-EBOOT basis - Allowed separate configs for GTA and
TIFF
- Add USB support to the menu (TIFF only)
- Support O as well as X to select in the menu
- Added square to generate EBOOT ID in menu
- Fixed most corrupted images in menu
- Fix clearRAMafterMenu option for TIFF
- Fixed "patchkernelwarning" bug
- Added GTA autoload option to installer
- Made fixed paths easier to change with hex editor
- Add latest config update
- v0.9.5 : v2.01 / v2.5 / v2.6 support!
- Added stable GTA exploit loader
- Rewrote NID resolution code to support different
firmware versions.
- Removed kernel-mode warning by default
- Improved audio stability
- Improved thread tidy-up upon program exit - no more dead
copies of user_main lying around.
- Improved memory tidy-up and integration with system heap:
this gives more memory available to homebrew, and is a
factor in the GBA emulator now working.
- Massively improved stability, especially for GTA
- Added config option to not call exit callback (should
help with apps that crash on exit)
- Added config option to not automatically prevent display
dimming (saves power)
- Added config option to control system bus speed.
- Added automated installer for Windows
- v0.9 : Wifi support, stability
- Added wifi support! Now the loader auto-detects if the
wifi libraries are loaded (via the wifi load method
above) and offers them to homebrew for use.
- Added call to application exit callback, to allow RIN
etc. to save state when L+R+START reset is used.
- Added memory reset after running the menu. This should
make things much less sensitive to whatever has been run
before them. Can be turned off in config.
- Added memory reset on exit - this might make it easier
to restart the loader.
- Added config option to fake success code from unknown
functions
- Added clock-speed option to the config file, to allow
automatic overclocking / underclocking of applications.
- v0.8.5 : Flexibility, compatibility
- Introduce configuration file, to allow tweaking of
EBOOTs by end-users. See loader085.cfg for details.
- Improved kernel-mode override patching logic.
- Attempt to kill surplus system threads, for stability.
- Run loader from reserved memory for increased stability.
- Tidied up some memory reuse in ELF section header
handling
- Bundled graphical menu now filters to only display the
names of EBOOTs for selection - all the surplus fluff is
hidden. Also now handles v1.5 homebrew directory structure.
- Added option to allow L+R+START reset to go back to
loader menu, rather than main menu
- v0.8 : Usability, compatibility
- Added capability to reboot the PSP without holding the
power button. During any EBOOT, just hold Left Trigger,
Right Trigger and START buttons for 1 second to exit the
loader and reboot back to the PSP menu.
- Separated menu binary from loader binary, to allow
custom menu creation. Included custom menu by Calum.
- Added kernel-mode override facility - allows the loader
to attempt to load apps marked as kernel-mode, that
don't really require kernel access. This doesn't enable
a huge number of apps, but it does enable a few - e.g.
ScummVM 0.5, PSPChess, Nethack. Expect more progress in
the future.
- Relax requirement to resolve all NIDs. Now you can
choose to ignore failed NIDs in the hope that they
aren't required.
- Improved USER_LUA stability (by incorporating the 0.7
USER_LUA patch)
- Added PowerTick() call to prevent display dimming during
play
- Skip calling .init code by default
- Allow easier co-existence of multiple loader versions.
- Improve memory and thread manager semaphoring.
- Added all remaining VSH-mode NIDs, thanks to Vampyre's work.
- Moved working EBOOT list to new web-page.
- Filled in some missing opcodes from the disassembler
- Added syscall dereferencing to disassembler
- Added hook to sceKernelCreateThread, to improve thread
monitoring
- Reduced screen spam during loading, by moving it to
debug-only build
- Attempt to load more of the ELF sections into RAM if
appropriate
- Retired hokey malloc implementation during file load,
use proper memory blocks now.
- v0.7 : Compatibility, usability
- Implement simple internal memory manager, hooked onto
firmware memory management, to boost memory pool
available to applications.
- Hook thread allocation and exit, to allow for clean
return to the loader from applications that support an
Exit option.
- Improve code signature algorithm to distinguish between
similar EBOOTs (fixes mis-identification of Casino
Addict as SMS emulator).
- Added overclocking option : use left and right trigger
buttons when choosing file to change CPU speed.
- Add NID resolution for Sircs function : enables PSP IR
Remote function.
- Add USB stubs to user-mode LUA, and better debug info in
case of script errors.
- Added left and right DPAD support in file-chooser, to go
to the start and end of the list
- Now supports more than 20 files in a directory
- Found pathname hack to run PSP Rhythm Composer.
- Improved cache flushing, should improve reliability
- Added safeguard to prevent PSPSet from being run and
bricking 2.0.
- v0.6 : Compatibility and stability
- bundle user-mode LUA player.
- only process stringtable section header and .reginfo,
all others are unused.
- setup $gp register from .reginfo
- change folder thumbnail to smaller image, improves
launch stability.
- added scan for EBOOTs with hard-coded paths.
- clear display RAM before starting some EBOOTs, to clear
up some graphical anomalies.
- added direct seek to ELF header - much much faster file
loading.
- v0.5 : More compatibility enhancements, bug fixes
- Better argc/argv handling, prevents a common cause of
startup crashes (e.g. PSP Schedule).
- Made the 'return to chooser' function more stable. It
now shouldn't affect how well the next EBOOT loads.
- Improved file scanning speed - large EBOOTs should load
much faster.
- Added 'alternate startup parameters', use this to run
Sega Master System emulator which was broken in v0.4.
- Introduced 'EBOOT signatures' : known workarounds for
specific EBOOTs should now be turned on automatically,
and install location can be automatically checked if a
specific path is required.
- Added support for .init sections, should help avoid a
few more startup crashes.
- Added option to return to EBOOT chooser on final
confirmation menu.
- Version number shown on screen fixed.
- Lots more info in readme file.
- Various minor bugfixes.
- v0.4 : Usability & reliability enhancements
- Return to menu if possible after failed load. NOTE :
this is a bit flaky, and mainly designed for quick
checks for kernel-mode apps, etc. If something crashes
after you ran through a few EBOOTs that wouldn't load,
it's worth retrying it immediately after a reboot.
- Experimented with exception handlers for extra
diagnostics, but this is not possible in user-mode (and
anyway the appropriate syscall code is unknown for v2.0).
- Fixed overflow with more than 19 directory entries - now
apps that failed just after EBOOT selection will get
further.
- Added set up of argv, argc to supply path arguments -
helps for Ghost In The Matrix, possibly others.
- Changed load address to 0x0860000, to allow more
headroom for increased loader complexity. Also begun
integrating Abu's loader code with the TIF file.
- v0.3 : Compatibility enhancements
- Allow browsing of multiple EBOOTs
- Change directory to selected EBOOT location
(adds sounds to Attack of the Mutants)
- Restore screen mode before running EBOOT
(improves reliability)
- Allow multiple text segments in ELF
- v0.2 : Original version, ported to C from original v0.1
EBOOT loader by Saotome.