                      UPDATER MODE PATCH for eLoader 0.97
                      -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

by Fanjita and Ditlew (www.noobz.eu)


This patch allows eLoader 0.97 ("Bock") to support UPDATER mode on PSPs with firmware
version 2.0 or 2.01.

See http://forums.qj.net/showthread.php?t=49947 for details on how to access UPDATER
mode using GTA and eLoader - this patch basically means that eLoader will continue to 
run correctly when GTA boots for the second time using that procedure.

NOTE: This patch is of interest only to developers wishing to explore UPDATER mode.  The
instructions below should be clear enough for anyone who is knowledgable enough that this
patch would be of interest to them, so please don't email asking for support of this patch,
unless you're sure that there's an error in the instructions.

Installation
------------

- Copy *.NID to ms0:/psp/eloader/

- Copy TETRIS.BIN to replace the version in your GTA eLoader save slot folder - usually
  one of the following:
    ms0:/psp/savedata/ULUS10041S5/
    ms0:/psp/savedata/ULES00151S5/
    ms0:/psp/savedata/ULES00182S5/


Support for v2.5/v2.6
---------------------

Astute readers will notice that the patch includes upd250.nid and upd260.nid, which are
intended to support v2.5 and v2.6 firmware.  But the syscall maps in these files seem to
be wrong, so they don't work.

If anyone is willing to collect a memory dump from v2.5 or v2.6, then we'd be able to
generate correctly-calibrated syscall maps.  To get a memory dump, you would need to:

- Configure GTA to not autoload eLoader.

- Install a GTA memory dumper (such as the one at http://forums.ps2dev.org/viewtopic.php?t=4335)
  in a GTA save slot other than slot 5.

- Run GTA, load eLoader, boot into UPDATER mode using the technique above, then load the
  memory dumper.

- Send us (homebrew@noobz.eu) a link to the memory dump.

Thanks in advance to anyone who is able to help with this.


List of NIDs
------------

The file generated_upd_200.txt is a text version of the upd200.nid file - it describes 
the list of syscalls that we believe is present in v2.0 UPDATE mode, and might be useful in
your experiments - in particular, if you experiment with sceKernelLoadModule() calls, you
will need to use the syscalls, because the eLoader currently just replaces such calls with
'JR $ra; OR $v0, $0, $0' for wifi homebrew compatibility reasons.


Some known facts about UPDATER mode via GTA
-------------------------------------------

- Write access to flash0 is not allowed

- Reassigning flash0 in read/write mode is not allowed

- The GTA module has access only to user mode.

- The sceVshBridge module is loaded, but inaccessible because the GTA module does not
  request the VSH thread attribute flag.

So, it seems like UPDATER mode doesn't have much more freedom than GAME mode - but maybe
you'll find something...
