Editing PS3MFW Builder

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

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:
<div style="float:right">[[File:Mfwbuilder.png|200px|thumb|left|PS3MFW Builder v0.2]]</div>
[[Category:Software]]
<div style="float:right">[[File:Mfw-otherosplusplus.png|200px|thumb|left|PS3MFW Builder v0.2 OtherOS++]]</div>
<div style="float:right">[[File:Mfw-rebug.png|200px|thumb|left|PS3MFW Builder v0.2 Rebug OtherOS++]]</div>


== Main description ==
== Main description ==


== Tasks ==
== Tasks ==
<div style="float:right">[[File:Mfwbuilder.png|200px|thumb|left|PS3MFW Builder v0.2]]<br />[[File:Mfw-otherosplusplus.png|200px|thumb|left|PS3MFW Builder v0.2 OtherOS++]]<br />[[File:Mfw-rebug.png|200px|thumb|left|PS3MFW Builder v0.2 Rebug OtherOS++]]</div>


=== PS3MFW ===  
=== PS3MFW ===  
Line 11: Line 11:
**add_license_msg.tcl (0.1) - Add a custom message to the 'New Features' installation screen. Modifies PUP license.xml --license-auto-add-features : Automatically generate the enabled features of PS3MFW --license-features-message : Prefix message to the generated features list --license-message : New Features message (Appears after the license agreement)
**add_license_msg.tcl (0.1) - Add a custom message to the 'New Features' installation screen. Modifies PUP license.xml --license-auto-add-features : Automatically generate the enabled features of PS3MFW --license-features-message : Prefix message to the generated features list --license-message : New Features message (Appears after the license agreement)
**broken_bluray.tcl (0.2) – Allows you to remove Blu-Ray firmware installation so that the MFW can be installed without a working Blu-Ray drive. This is potentially dangerous if used on a PS3 with a working drive, and should only be used if the drive is broken.
**broken_bluray.tcl (0.2) – Allows you to remove Blu-Ray firmware installation so that the MFW can be installed without a working Blu-Ray drive. This is potentially dangerous if used on a PS3 with a working drive, and should only be used if the drive is broken.
**change_coldboot_files.tcl (0.2) – Advanced users only: Allows changing the sound played and image shown during the boot process. Caution: If improper files are used, this can cause a “brick” (Currently not working for me maybe it‘s getting fixed in the future).
**change_coldboot_files.tcl (0.2) – Advanced users only: Allows changing the sound played and image shown during the boot process. Caution: If improper files are used, this can cause a “brick”.
**change_devflash_files.tcl
**change_devflash_files.tcl
**change_ssl_cer.tcl (0.2) – Allows changing of SSL certificates.
**change_ssl_cer.tcl (0.2) – Allows changing of SSL certificates.
Line 35: Line 35:
**patch_xmb_plugin.tcl
**patch_xmb_plugin.tcl
**spoof_version.tcl (0.2) – Allows changing the firmware version the PS3 appears to be on, similar to the rebug spoofer.
**spoof_version.tcl (0.2) – Allows changing the firmware version the PS3 appears to be on, similar to the rebug spoofer.


=== Gitbrew OtherOS++ ===
=== Gitbrew OtherOS++ ===
Line 73: Line 76:




=== Alternate XMB Languages ===
=== PSheb project ===
* Hebrew (PSheb project 0.1)
* PSheb project 0.1 (Hebrew translation of PS3 XMB)
** Task: [https://github.com/DanyL/PS3MFW-Builder/blob/master/tasks/language_pack.tcl language_pack.tcl]
** Task: [http://git.dashhacks.com/~danyl/ps3mfw/danyls-tasks/blobs/master/language_pack.tcl language_pack.tcl]
** Language Pack: [https://github.com/DanyL/PSheb]
** Languagepack: [http://git.dashhacks.com/psheb/psheb git.dashhacks.com/psheb]
** Newsitem including screenshots for reference: http://www.ps3hax.net/2011/08/psheb-project-v0-1-hebrew-language-on-ps3/
** Newsitem including screenshots for reference: http://www.ps3hax.net/2011/08/psheb-project-v0-1-hebrew-language-on-ps3/
* Greek (ErMaK86's Translation for 4.80/4.81)
** Language Pack: [http://www.mediafire.com/file/5ya93a6duvu7wo7/Greek-ErMaK86.LP]


==== Guide for adding other translations / building languagepacks ====
==== Guide for adding other translations / building languagepacks ====
This guide will explain you how to translate the XMB and use [https://github.com/DanyL/PS3MFW-Builder/blob/master/tasks/language_pack.tcl language_pack.tcl] PS3MFW task.
This guide will explain you how to translate the XMB and use [http://git.dashhacks.com/~danyl/ps3mfw/danyls-tasks/blobs/master/language_pack.tcl language_pack.tcl] PS3MFW task.


LP structure:
LP structure:
Line 126: Line 126:


source: http://www.ps3hax.net/2011/08/xmb-translation-guide/ (thanks to DanyL for this fine explaination :) )
source: http://www.ps3hax.net/2011/08/xmb-translation-guide/ (thanks to DanyL for this fine explaination :) )


=== more Spoof ===
=== more Spoof ===
Copypaste and save as spoof_version.tcl in tasks folder (make sure you use proper ps3mfw_base.tcl from 0.2 or [http://pastie.org/private/1u5p6jfd5mhxeleiibadg unofficial v0.2.1 OtherOS++] and not the glevand or rebug version that reduced/castrated the spoof method):
Copypaste and save as spoof_version.tcl in tasks folder:
{{Boxcode|code=<syntaxhighlight lang="tcl">
<pre>
 
 
#!/usr/bin/tclsh
#!/usr/bin/tclsh
#
#
Line 146: Line 145:


# Option --spoof: Select firmware version to spoof
# Option --spoof: Select firmware version to spoof
# Type --spoof: combobox { {1.02 1788 001:CEX-ww 20061021} {1.10 2120 001:CEX-ww 20061109} {1.11 2232 001:CEX-ww 20061121} {1.30 2400 001:CEX-ww 20061205} {1.31 2494 001:CEX-ww 20061212} {1.32 2587 001:CEX-ww 20061218} {1.50 3014 001:CEX-ww 20070119} {1.51 3229 001:CEX-ww 20070201} {1.54 3563 001:CEX-ww 20070222} {1.60 3940 001:CEX-ww 20070321} {1.70 4540 001:CEX-ww 20070416} {1.80 5354 001:CEX-ww 20070523} {1.81 5746 001:CEX-ww 20070612} {1.82 5986 001:CEX-ww 20070624} {1.90 6591 001:CEX-ww 20070721} {1.92 7272 001:CEX-ww 20070828} {1.93 7444 001:CEX-ww 20070909} {1.94 7510 001:CEX-ww 20070912} {2.00 8237 001:CEX-ww 20071030} {2.01 8426 001:CEX-ww 20071115} {2.10 9181 001:CEX-ww 20071215} {2.16 10444 001:CEX-ww 20080131} {2.17 11729 001:CEX-ww 20080303} {2.20 12342 001:CEX-ww 20080317} {2.30 13778 001:CEX-ww 20080411} {2.35 15109 001:CEX-ww 20080512} {2.36 16093 001:CEX-ww 20080605} {2.40 17023 001:CEX-ww 20080625} {2.41 17362 001:CEX-ww 20080704} {3.00 34641 001:CEX-ww 20090829} {2.42 18467 001:CEX-ww 20080723} {2.43 19024 001:CEX-ww 20080903} {2.50 23368 001:CEX-ww 20081011} {2.52 24267 001:CEX-ww 20081028} {2.53 25075 001:CEX-ww 20081117} {2.60 28392 001:CEX-ww 20090116} {2.70 30429 001:CEX-ww 20090326} {2.76 31347 001:CEX-ww 20090427} {2.80 32582 001:CEX-ww 20090616} {3.00 34641 001:CEX-ww 20090829} {3.01 35108 001:CEX-ww 20090910} {3.10 37233 001:CEX-ww 20091113} {3.15 38031 001:CEX-ww 20091206} {3.20 39999 001:CEX-ww 20100128} {3.21 41486 001:CEX-ww 20100320} {3.30 42164 001:CEX-ww 20100414} {3.40 44261 001:CEX-ww 20100623} {3.41 45039 001:CEX-ww 20100721} {3.42 45831 001:CEX-ww 20100901} {3.50 46135 001:CEX-ww 20100913} {3.55 47516 001:CEX-ww 20101127} {3.56 48165 001:CEX-ww 20110125} {3.56 48247 001:CEX-ww 20110129} {3.60 48686 001:CEX-ww 20110304} {3.61 49561 001:CEX-ww 20110428} {3.65 49764 001:CEX-ww 20110513} {3.66 50527 001:CEX-ww 20110616} {3.70 51968 001:CEX-ww 20110805} {3.72 52565 001:CEX-ww 20110914} {3.73 52870 001:CEX-ww 20111004} {4.00 53642 001:CEX-ww 20111122} {4.10 54953 001:CEX-ww 20120206} {4.11 55054 001:CEX-ww 20120211} {4.20 57923 001:CEX-ww 20120615} {4.21 58071 001:CEX-ww 20120630} {4.25 58730 001:CEX-ww 20120907} {4.30 59178 001:CEX-ww 20121018} {4.31 59249 001:CEX-ww 20121027} {4.40 60156 001:CEX-ww 20130315} {4.41 60349 001:CEX-ww 20130419} {4.45 60695 001:CEX-ww 20130531} {4.46 60826 001:CEX-ww 20130620} {4.50 61890 001:CEX-ww 20130914} {4.55 62847 001:CEX-ww 20140129} {4.55 62850 001:CEX-ww 20140129} {4.60 63910 001:CEX-ww 20140618} {4.65 64266 001:CEX-ww 20140813} {4.66 64645 001:CEX-ww 20141113} }
# Type --spoof: combobox { {1.02 1788 001:CEX-ww 20061021} {1.10 2120 001:CEX-ww 20061109} {1.11 2232 001:CEX-ww 20061121} {1.30 2400 001:CEX-ww 20061205} {1.31 2494 001:CEX-ww 20061212} {1.32 2587 001:CEX-ww 20061218} {1.50 3014 001:CEX-ww 20070119} {1.51 3229 001:CEX-ww 20070201} {1.54 3563 001:CEX-ww 20070222} {1.60 3940 001:CEX-ww 20070321} {1.70 4540 001:CEX-ww 20070416} {1.80 5354 001:CEX-ww 20070523} {1.81 5746 001:CEX-ww 20070612} {1.82 5986 001:CEX-ww 20070624} {1.90 6591 001:CEX-ww 20070721} {1.92 7272 001:CEX-ww 20070828} {1.93 7444 001:CEX-ww 20070909} {1.94 7510 001:CEX-ww 20070912} {2.00 8237 001:CEX-ww 20071030} {2.01 8426 001:CEX-ww 20071115} {2.10 9181 001:CEX-ww 20071215} {2.16 10444 001:CEX-ww 20080131} {2.17 11729 001:CEX-ww 20080303} {2.20 12342 001:CEX-ww 20080317} {2.30 13778 001:CEX-ww 20080411} {2.35 15109 001:CEX-ww 20080512} {2.36 16093 001:CEX-ww 20080605} {2.40 17023 001:CEX-ww 20080625} {2.41 17362 001:CEX-ww 20080704} {3.00 34641 001:CEX-ww 20090829} {2.42 18467 001:CEX-ww 20080723} {2.43 19024 001:CEX-ww 20080903} {2.50 23368 001:CEX-ww 20081011} {2.52 24267 001:CEX-ww 20081028} {2.53 25075 001:CEX-ww 20081117} {2.60 28392 001:CEX-ww 20090116} {2.70 30429 001:CEX-ww 20090326} {2.76 31347 001:CEX-ww 20090427} {2.80 32582 001:CEX-ww 20090616} {3.00 34641 001:CEX-ww 20090829} {3.01 35108 001:CEX-ww 20090910} {3.10 37233 001:CEX-ww 20091113} {3.15 38031 001:CEX-ww 20091206} {3.20 39999 001:CEX-ww 20100128} {3.21 41486 001:CEX-ww 20100320} {3.30 42164 001:CEX-ww 20100414} {3.40 44261 001:CEX-ww 20100623} {3.41 45039 001:CEX-ww 20100721} {3.42 45831 001:CEX-ww 20100901} {3.50 46135 001:CEX-ww 20100913} {3.55 47516 001:CEX-ww 20101127} {3.56 48165 001:CEX-ww 20110125} {3.56 48247 001:CEX-ww 20110129} {3.60 48686 001:CEX-ww 20110304} {3.61 49561 001:CEX-ww 20110428} {3.65 49764 001:CEX-ww 20110513} {3.66 50527 001:CEX-ww 20110616} {3.70 51968 001:CEX-ww 20110805} {3.72 52565 001:CEX-ww 20110914} {3.73 52870 001:CEX-ww 20111004} }
 


namespace eval ::spoof_version {
namespace eval ::spoof_version {


     array set ::spoof_version::options {
     array set ::spoof_version::options {
       --spoof "4.66 64645 001:CEX-ww 20141113"
       --spoof "3.73 52870 001:CEX-ww 20111004"
     }
     }


Line 205: Line 205:
       catch_die {::patch_elf $elf $search 0 $replace} "Unable to patch self [file tail $elf] with [::hexify $replace]"
       catch_die {::patch_elf $elf $search 0 $replace} "Unable to patch self [file tail $elf] with [::hexify $replace]"


# debug "Patching 0x31a7c0"
#     debug "Patching 0x31a7c0"  
# set search "\x48\x00\x00\x38\xa0\x7f\x00\x04\x39\x60\x00\x01"
#     set search "\x48\x00\x00\x38\xa0\x7f\x00\x04\x39\x60\x00\x01"
# set replace "\x38\x60\x00\x82"
#     set replace "\x38\x60\x00\x82"
# catch_die {::patch_elf $elf $search 4 $replace} "Unable to patch self [file tail $elf]"
#     catch_die {::patch_elf $elf $search 4 $replace} "Unable to patch self [file tail $elf]"


# debug "Patching ..."
#     debug "Patching ..."
# set search "\x4b\xff\xfe\x80\xf8\x21\xff\x81\x7c\x08\x02\xa6\x38\x61\x00\x70"
#     set search "\x4b\xff\xfe\x80\xf8\x21\xff\x81\x7c\x08\x02\xa6\x38\x61\x00\x70"
# set replace "\x38\x60\x00\x01\x4e\x80\x00\x20"
#     set replace "\x38\x60\x00\x01\x4e\x80\x00\x20"
# catch_die {::patch_elf $elf $search 4 $replace} "Unable to patch self [file tail $elf]"
#     catch_die {::patch_elf $elf $search 4 $replace} "Unable to patch self [file tail $elf]"


       debug "Patching 0x48d030"
       debug "Patching 0x48d030"
       set search "\xeb\xe1\x00\x80\x38\x21\x00\x90\x7c\x08\x03\xa6\x4e\x80\x00\x20"
       set search   "\xeb\xe1\x00\x80\x38\x21\x00\x90\x7c\x08\x03\xa6\x4e\x80\x00\x20"
       append search "\xf8\x21\xff\x61\x7c\x08\x02\xa6\xfb\xe1\x00\x98\xf8\x01\x00\xb0"
       append search "\xf8\x21\xff\x61\x7c\x08\x02\xa6\xfb\xe1\x00\x98\xf8\x01\x00\xb0"
       append search "\x7c\x7f\x1b\x78\x38\x00\x00\x00\x38\x61\x00\x74\xfb\x81\x00\x80"
       append search "\x7c\x7f\x1b\x78\x38\x00\x00\x00\x38\x61\x00\x74\xfb\x81\x00\x80"
Line 333: Line 333:
     }
     }
}
}
</syntaxhighlight>}}
</pre>
Note: there is good reason for including the date and not ommitting it like the simplified spoof as in gitbrew and danyL versions.


=== more GameOS/OtherOS++ sizes ===
=== more GameOS/OtherOS++ sizes ===
Copypaste and save as patch_emer_init.tcl in tasks folder:
Copypaste and save as patch_emer_init.tcl in tasks folder:
{{Boxcode|code=<syntaxhighlight lang="tcl">
<pre>
#!/usr/bin/tclsh
#!/usr/bin/tclsh
#
#
Line 349: Line 348:
# License ("GPL") version 3, as published by the Free Software Foundation.
# License ("GPL") version 3, as published by the Free Software Foundation.
#
#
 
# Priority: 300
# Priority: 300
# Description: Patch emergency init application
# Description: Patch emergency init
 
# Option --patch-pup-search-in-game-disc: Disable searching for update packages in GAME disc
# Option --patch-emer-init-gameos-hdd-region-size-half: Create GameOS HDD region of size half of installed HDD
# Option --patch-gameos-hdd-region-size: Create GameOS HDD region smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-quarter: Create GameOS HDD region of size quarter of installed HDD
# Option --patch-emer-init-gameos-hdd-region-size-eighth: Create GameOS HDD region of size eighth of installed HDD
# Type --patch-pup-search-in-game-disc: boolean
# Option --patch-emer-init-gameos-hdd-region-size-22gb-smaller: Create GameOS HDD region of size 22GB smaller than default
# Type --patch-gameos-hdd-region-size: combobox {{1/eighth of drive} {1/quarter of drive} {1/half of drive} {22GB} {10GB} {20GB} {30GB} {40GB} {50GB} {60GB} {70GB} {80GB} {90GB} {100GB} {110GB} {120GB} {130GB} {140GB} {150GB} {160GB} {170GB} {180GB} {190GB} {200GB} {210GB} {220GB} {230GB} {240GB} {250GB} {260GB} {270GB} {280GB} {290GB} {300GB} {310GB} {320GB} {330GB} {340GB} {350GB} {360GB} {370GB} {380GB} {390GB} {400GB} {410GB} {420GB} {430GB} {440GB} {450GB} {460GB} {470GB} {480GB} {490GB} {500GB} {510GB} {520GB} {530GB} {540GB} {550GB} {560GB} {570GB} {580GB} {590GB} {600GB} {610GB} {620GB} {630GB} {640GB} {650GB} {660GB} {670GB} {680GB} {690GB} {700GB} {710GB} {720GB} {730GB} {740GB} {750GB} {760GB} {770GB} {780GB} {790GB} {800GB} {810GB} {820GB} {830GB} {840GB} {850GB} {860GB} {870GB} {880GB} {890GB} {900GB} {910GB} {920GB} {930GB} {940GB} {950GB} {960GB} {970GB} {980GB} {990GB} {1000GB}}
# Option --patch-emer-init-gameos-hdd-region-size-10gb-smaller: Create GameOS HDD region of size 10GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-20gb-smaller: Create GameOS HDD region of size 20GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-30gb-smaller: Create GameOS HDD region of size 30GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-40gb-smaller: Create GameOS HDD region of size 40GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-50gb-smaller: Create GameOS HDD region of size 50GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-60gb-smaller: Create GameOS HDD region of size 60GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-70gb-smaller: Create GameOS HDD region of size 70GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-80gb-smaller: Create GameOS HDD region of size 80GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-90gb-smaller: Create GameOS HDD region of size 90GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-100gb-smaller: Create GameOS HDD region of size 100GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-110gb-smaller: Create GameOS HDD region of size 110GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-120gb-smaller: Create GameOS HDD region of size 120GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-130gb-smaller: Create GameOS HDD region of size 130GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-140gb-smaller: Create GameOS HDD region of size 140GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-150gb-smaller: Create GameOS HDD region of size 150GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-160gb-smaller: Create GameOS HDD region of size 160GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-170gb-smaller: Create GameOS HDD region of size 170GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-180gb-smaller: Create GameOS HDD region of size 180GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-190gb-smaller: Create GameOS HDD region of size 190GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-200gb-smaller: Create GameOS HDD region of size 200GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-210gb-smaller: Create GameOS HDD region of size 210GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-220gb-smaller: Create GameOS HDD region of size 220GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-230gb-smaller: Create GameOS HDD region of size 230GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-240gb-smaller: Create GameOS HDD region of size 240GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-250gb-smaller: Create GameOS HDD region of size 250GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-260gb-smaller: Create GameOS HDD region of size 260GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-270gb-smaller: Create GameOS HDD region of size 270GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-280gb-smaller: Create GameOS HDD region of size 280GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-290gb-smaller: Create GameOS HDD region of size 290GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-300gb-smaller: Create GameOS HDD region of size 300GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-310gb-smaller: Create GameOS HDD region of size 310GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-320gb-smaller: Create GameOS HDD region of size 320GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-330gb-smaller: Create GameOS HDD region of size 330GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-340gb-smaller: Create GameOS HDD region of size 340GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-350gb-smaller: Create GameOS HDD region of size 350GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-360gb-smaller: Create GameOS HDD region of size 360GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-370gb-smaller: Create GameOS HDD region of size 370GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-380gb-smaller: Create GameOS HDD region of size 380GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-390gb-smaller: Create GameOS HDD region of size 390GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-400gb-smaller: Create GameOS HDD region of size 400GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-410gb-smaller: Create GameOS HDD region of size 410GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-420gb-smaller: Create GameOS HDD region of size 420GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-430gb-smaller: Create GameOS HDD region of size 430GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-440gb-smaller: Create GameOS HDD region of size 440GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-450gb-smaller: Create GameOS HDD region of size 450GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-460gb-smaller: Create GameOS HDD region of size 460GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-470gb-smaller: Create GameOS HDD region of size 470GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-480gb-smaller: Create GameOS HDD region of size 480GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-490gb-smaller: Create GameOS HDD region of size 490GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-500gb-smaller: Create GameOS HDD region of size 500GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-510gb-smaller: Create GameOS HDD region of size 510GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-520gb-smaller: Create GameOS HDD region of size 520GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-530gb-smaller: Create GameOS HDD region of size 530GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-540gb-smaller: Create GameOS HDD region of size 540GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-550gb-smaller: Create GameOS HDD region of size 550GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-560gb-smaller: Create GameOS HDD region of size 560GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-570gb-smaller: Create GameOS HDD region of size 570GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-580gb-smaller: Create GameOS HDD region of size 580GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-590gb-smaller: Create GameOS HDD region of size 590GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-600gb-smaller: Create GameOS HDD region of size 600GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-610gb-smaller: Create GameOS HDD region of size 610GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-620gb-smaller: Create GameOS HDD region of size 620GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-630gb-smaller: Create GameOS HDD region of size 630GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-640gb-smaller: Create GameOS HDD region of size 640GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-650gb-smaller: Create GameOS HDD region of size 650GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-660gb-smaller: Create GameOS HDD region of size 660GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-670gb-smaller: Create GameOS HDD region of size 670GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-680gb-smaller: Create GameOS HDD region of size 680GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-690gb-smaller: Create GameOS HDD region of size 690GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-700gb-smaller: Create GameOS HDD region of size 700GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-710gb-smaller: Create GameOS HDD region of size 710GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-720gb-smaller: Create GameOS HDD region of size 720GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-730gb-smaller: Create GameOS HDD region of size 730GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-740gb-smaller: Create GameOS HDD region of size 740GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-750gb-smaller: Create GameOS HDD region of size 750GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-760gb-smaller: Create GameOS HDD region of size 760GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-770gb-smaller: Create GameOS HDD region of size 770GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-780gb-smaller: Create GameOS HDD region of size 780GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-790gb-smaller: Create GameOS HDD region of size 790GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-800gb-smaller: Create GameOS HDD region of size 800GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-810gb-smaller: Create GameOS HDD region of size 810GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-820gb-smaller: Create GameOS HDD region of size 820GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-830gb-smaller: Create GameOS HDD region of size 830GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-840gb-smaller: Create GameOS HDD region of size 840GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-850gb-smaller: Create GameOS HDD region of size 850GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-860gb-smaller: Create GameOS HDD region of size 860GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-870gb-smaller: Create GameOS HDD region of size 870GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-880gb-smaller: Create GameOS HDD region of size 880GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-890gb-smaller: Create GameOS HDD region of size 890GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-900gb-smaller: Create GameOS HDD region of size 900GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-910gb-smaller: Create GameOS HDD region of size 910GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-920gb-smaller: Create GameOS HDD region of size 920GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-930gb-smaller: Create GameOS HDD region of size 930GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-940gb-smaller: Create GameOS HDD region of size 940GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-950gb-smaller: Create GameOS HDD region of size 950GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-960gb-smaller: Create GameOS HDD region of size 960GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-970gb-smaller: Create GameOS HDD region of size 970GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-980gb-smaller: Create GameOS HDD region of size 980GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-990gb-smaller: Create GameOS HDD region of size 990GB smaller than default
# Option --patch-emer-init-gameos-hdd-region-size-1000gb-smaller: Create GameOS HDD region of size 1000GB smaller than default
# Option --patch-emer-init-disable-pup-search-in-game-disc: Disable searching for update packages in GAME disc.
 
# Type --patch-emer-init-gameos-hdd-region-size-half: boolean
# Type --patch-emer-init-gameos-hdd-region-size-quarter: boolean
# Type --patch-emer-init-gameos-hdd-region-size-eighth: boolean
# Type --patch-emer-init-gameos-hdd-region-size-22gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-10gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-20gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-30gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-40gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-50gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-60gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-70gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-80gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-90gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-100gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-110gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-120gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-130gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-140gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-150gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-160gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-170gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-180gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-190gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-200gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-210gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-220gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-230gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-240gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-250gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-260gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-270gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-280gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-290gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-300gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-310gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-320gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-330gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-340gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-350gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-360gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-370gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-380gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-390gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-400gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-410gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-420gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-430gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-440gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-450gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-460gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-470gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-480gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-490gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-500gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-510gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-520gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-530gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-540gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-550gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-560gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-570gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-580gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-590gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-600gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-610gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-620gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-630gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-640gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-650gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-660gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-670gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-680gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-690gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-700gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-710gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-720gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-730gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-740gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-750gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-760gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-770gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-780gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-790gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-800gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-810gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-820gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-830gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-840gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-850gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-860gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-870gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-880gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-890gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-900gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-910gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-920gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-930gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-940gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-950gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-960gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-970gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-980gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-990gb-smaller: boolean
# Type --patch-emer-init-gameos-hdd-region-size-1000gb-smaller: boolean
# Type --patch-emer-init-disable-pup-search-in-game-disc: boolean
 
namespace eval ::patch_emer_init {
namespace eval ::patch_emer_init {
 
     array set ::patch_emer_init::options {
     array set ::patch_emer_init::options {
         --patch-pup-search-in-game-disc false
         --patch-emer-init-gameos-hdd-region-size-half false
         --patch-gameos-hdd-region-size "1/quarter"
         --patch-emer-init-gameos-hdd-region-size-quarter true
        --patch-emer-init-gameos-hdd-region-size-eighth false
        --patch-emer-init-gameos-hdd-region-size-22gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-10gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-20gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-30gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-40gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-50gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-60gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-70gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-80gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-90gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-100gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-110gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-120gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-130gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-140gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-150gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-160gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-170gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-180gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-190gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-200gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-210gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-220gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-230gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-240gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-250gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-260gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-270gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-280gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-290gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-300gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-310gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-320gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-330gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-340gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-350gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-360gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-370gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-380gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-390gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-400gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-410gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-420gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-430gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-440gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-450gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-460gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-470gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-480gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-490gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-500gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-510gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-520gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-530gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-540gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-550gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-560gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-570gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-580gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-590gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-600gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-610gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-620gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-630gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-640gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-650gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-660gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-670gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-680gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-690gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-700gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-710gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-720gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-730gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-740gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-750gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-760gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-770gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-780gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-790gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-800gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-810gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-820gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-830gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-840gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-850gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-860gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-870gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-880gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-890gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-900gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-910gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-920gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-930gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-940gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-950gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-960gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-970gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-980gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-990gb-smaller false
        --patch-emer-init-gameos-hdd-region-size-1000gb-smaller false
        --patch-emer-init-disable-pup-search-in-game-disc false
     }
     }
 
     proc main {} {
     proc main { } {
         set self "emer_init.self"
         set self "emer_init.self"
 
         ::modify_coreos_file $self ::patch_emer_init::patch_self
         ::modify_coreos_file $self ::patch_emer_init::patch_self
     }
     }
 
     proc patch_self {self} {
     proc patch_self {self} {
         ::modify_self_file $self ::patch_emer_init::patch_elf
         ::modify_self_file $self ::patch_emer_init::patch_elf
     }
     }
 
     proc patch_elf {elf} {
     proc patch_elf {elf} {
         variable options
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-half)} {
        set size $options(--patch-gameos-hdd-region-size)
             log "Patching emergency init to create GameOS HDD region of size half of installed HDD"
        set pup $options(--patch-pup-search-in-game-disc)
 
             set search "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
        if {$size != ""} {
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
             log "Patching [file tail $elf] to create GameOS HDD region of size $size of installed HDD"
             set replace "\x79\x27\xf8\x42"
 
             set search   "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00"
            append search "\x7d\x26\x48\x50\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            if {[string equal ${size} "1/eighth of drive"] == 1} {
                set replace "\x79\x27\xe8\xc2"
            } elseif {[string equal ${size} "1/quarter of drive"] == 1} {
                set replace "\x79\x27\xf0\x82"
             } elseif {[string equal ${size} "1/half of drive"] == 1} {
                set replace "\x79\x27\xf8\x42"
            } elseif {[string equal ${size} "22GB"] == 1} {
                set replace "\x3c\xe9\xfd\x40"
            } elseif {[string equal ${size} "10GB"] == 1} {
                set replace "\x3c\xe9\xfe\xc0"
            } elseif {[string equal ${size} "20GB"] == 1} {
                set replace "\x3c\xe9\xfd\x80"
            } elseif {[string equal ${size} "30GB"] == 1} {
                set replace "\x3c\xe9\xfc\x40"
            } elseif {[string equal ${size} "40GB"] == 1} {
                set replace "\x3c\xe9\xfb\x00"
            } elseif {[string equal ${size} "50GB"] == 1} {
                set replace "\x3c\xe9\xf9\xc0"
            } elseif {[string equal ${size} "60GB"] == 1} {
                set replace "\x3c\xe9\xf8\x80"
            } elseif {[string equal ${size} "70GB"] == 1} {
                set replace "\x3c\xe9\xf7\x40"
            } elseif {[string equal ${size} "80GB"] == 1} {
                set replace "\x3c\xe9\xf6\x00"
            } elseif {[string equal ${size} "90GB"] == 1} {
                set replace "\x3c\xe9\xf4\xc0"
            } elseif {[string equal ${size} "100GB"] == 1} {
                set replace "\x3c\xe9\xf3\x80"
            } elseif {[string equal ${size} "110GB"] == 1} {
                set replace "\x3c\xe9\xf2\x40"
            } elseif {[string equal ${size} "120GB"] == 1} {
                set replace "\x3c\xe9\xf1\x00"
            } elseif {[string equal ${size} "130GB"] == 1} {
                set replace "\x3c\xe9\xef\xc0"
            } elseif {[string equal ${size} "140GB"] == 1} {
                set replace "\x3c\xe9\xee\x80"
            } elseif {[string equal ${size} "150GB"] == 1} {
                set replace "\x3c\xe9\xed\x40"
            } elseif {[string equal ${size} "160GB"] == 1} {
                set replace "\x3c\xe9\xec\x00"
            } elseif {[string equal ${size} "170GB"] == 1} {
                set replace "\x3c\xe9\xea\xc0"
            } elseif {[string equal ${size} "180GB"] == 1} {
                set replace "\x3c\xe9\xe9\x80"
            } elseif {[string equal ${size} "190GB"] == 1} {
                set replace "\x3c\xe9\xe8\x40"
            } elseif {[string equal ${size} "200GB"] == 1} {
                set replace "\x3c\xe9\xe7\x00"
            } elseif {[string equal ${size} "210GB"] == 1} {
                set replace "\x3c\xe9\xe5\xc0"
            } elseif {[string equal ${size} "220GB"] == 1} {
                set replace "\x3c\xe9\xe4\x80"
            } elseif {[string equal ${size} "230GB"] == 1} {
                set replace "\x3c\xe9\xe3\x40"
            } elseif {[string equal ${size} "240GB"] == 1} {
                set replace "\x3c\xe9\xe2\x00"
            } elseif {[string equal ${size} "250GB"] == 1} {
                set replace "\x3c\xe9\xe0\xc0"
            } elseif {[string equal ${size} "260GB"] == 1} {
                set replace "\x3c\xe9\xdf\x80"
            } elseif {[string equal ${size} "270GB"] == 1} {
                set replace "\x3c\xe9\xde\x40"
            } elseif {[string equal ${size} "280GB"] == 1} {
                set replace "\x3c\xe9\xdd\x00"
            } elseif {[string equal ${size} "290GB"] == 1} {
                set replace "\x3c\xe9\xdb\xc0"
            } elseif {[string equal ${size} "300GB"] == 1} {
                set replace "\x3c\xe9\xda\x80"
            } elseif {[string equal ${size} "310GB"] == 1} {
                set replace "\x3c\xe9\xd9\x40"
            } elseif {[string equal ${size} "320GB"] == 1} {
                set replace "\x3c\xe9\xd8\x00"
            } elseif {[string equal ${size} "330GB"] == 1} {
                set replace "\x3c\xe9\xd6\xc0"
            } elseif {[string equal ${size} "340GB"] == 1} {
                set replace "\x3c\xe9\xd5\x80"
            } elseif {[string equal ${size} "350GB"] == 1} {
                set replace "\x3c\xe9\xd4\x40"
            } elseif {[string equal ${size} "360GB"] == 1} {
                set replace "\x3c\xe9\xd3\x00"
            } elseif {[string equal ${size} "370GB"] == 1} {
                set replace "\x3c\xe9\xd1\xc0"
            } elseif {[string equal ${size} "380GB"] == 1} {
                set replace "\x3c\xe9\xd0\x80"
            } elseif {[string equal ${size} "390GB"] == 1} {
                set replace "\x3c\xe9\xcf\x40"
            } elseif {[string equal ${size} "400GB"] == 1} {
                set replace "\x3c\xe9\xce\x00"
            } elseif {[string equal ${size} "410GB"] == 1} {
                set replace "\x3c\xe9\xcc\xc0"
            } elseif {[string equal ${size} "420GB"] == 1} {
                set replace "\x3c\xe9\xcb\x80"
            } elseif {[string equal ${size} "430GB"] == 1} {
                set replace "\x3c\xe9\xca\x40"
            } elseif {[string equal ${size} "440GB"] == 1} {
                set replace "\x3c\xe9\xc9\x00"
            } elseif {[string equal ${size} "450GB"] == 1} {
                set replace "\x3c\xe9\xc7\xc0"
            } elseif {[string equal ${size} "460GB"] == 1} {
                set replace "\x3c\xe9\xc6\x80"
            } elseif {[string equal ${size} "470GB"] == 1} {
                set replace "\x3c\xe9\xc5\x40"
            } elseif {[string equal ${size} "480GB"] == 1} {
                set replace "\x3c\xe9\xc4\x00"
            } elseif {[string equal ${size} "490GB"] == 1} {
                set replace "\x3c\xe9\xc2\xc0"
            } elseif {[string equal ${size} "500GB"] == 1} {
                set replace "\x3c\xe9\xc1\x80"
            } elseif {[string equal ${size} "510GB"] == 1} {
                set replace "\x3c\xe9\xc0\x40"
            } elseif {[string equal ${size} "520GB"] == 1} {
                set replace "\x3c\xe9\xbf\x00"
            } elseif {[string equal ${size} "530GB"] == 1} {
                set replace "\x3c\xe9\xbd\xc0"
            } elseif {[string equal ${size} "540GB"] == 1} {
                set replace "\x3c\xe9\xbc\x80"
            } elseif {[string equal ${size} "550GB"] == 1} {
                set replace "\x3c\xe9\xbb\x40"
            } elseif {[string equal ${size} "560GB"] == 1} {
                set replace "\x3c\xe9\xba\x00"
            } elseif {[string equal ${size} "570GB"] == 1} {
                set replace "\x3c\xe9\xb8\xc0"
            } elseif {[string equal ${size} "580GB"] == 1} {
                set replace "\x3c\xe9\xb7\x80"
            } elseif {[string equal ${size} "590GB"] == 1} {
                set replace "\x3c\xe9\xb6\x40"
            } elseif {[string equal ${size} "600GB"] == 1} {
                set replace "\x3c\xe9\xb5\x00"
            } elseif {[string equal ${size} "610GB"] == 1} {
                set replace "\x3c\xe9\xb3\xc0"
            } elseif {[string equal ${size} "620GB"] == 1} {
                set replace "\x3c\xe9\xb2\x80"
            } elseif {[string equal ${size} "630GB"] == 1} {
                set replace "\x3c\xe9\xb1\x40"
            } elseif {[string equal ${size} "640GB"] == 1} {
                set replace "\x3c\xe9\xb0\x00"
            } elseif {[string equal ${size} "650GB"] == 1} {
                set replace "\x3c\xe9\xae\xc0"
            } elseif {[string equal ${size} "660GB"] == 1} {
                set replace "\x3c\xe9\xad\x80"
            } elseif {[string equal ${size} "670GB"] == 1} {
                set replace "\x3c\xe9\xac\x40"
            } elseif {[string equal ${size} "680GB"] == 1} {
                set replace "\x3c\xe9\xab\x00"
            } elseif {[string equal ${size} "690GB"] == 1} {
                set replace "\x3c\xe9\xa9\xc0"
            } elseif {[string equal ${size} "700GB"] == 1} {
                set replace "\x3c\xe9\xa8\x80"
            } elseif {[string equal ${size} "710GB"] == 1} {
                set replace "\x3c\xe9\xa7\x40"
            } elseif {[string equal ${size} "720GB"] == 1} {
                set replace "\x3c\xe9\xa6\x00"
            } elseif {[string equal ${size} "730GB"] == 1} {
                set replace "\x3c\xe9\xa4\xc0"
            } elseif {[string equal ${size} "740GB"] == 1} {
                set replace "\x3c\xe9\xa3\x80"
            } elseif {[string equal ${size} "750GB"] == 1} {
                set replace "\x3c\xe9\xa2\x40"
            } elseif {[string equal ${size} "760GB"] == 1} {
                set replace "\x3c\xe9\xa1\x00"
            } elseif {[string equal ${size} "770GB"] == 1} {
                set replace "\x3c\xe9\x9f\xc0"
            } elseif {[string equal ${size} "780GB"] == 1} {
                set replace "\x3c\xe9\x9e\x80"
            } elseif {[string equal ${size} "790GB"] == 1} {
                set replace "\x3c\xe9\x9d\x40"
            } elseif {[string equal ${size} "800GB"] == 1} {
                set replace "\x3c\xe9\x9c\x00"
            } elseif {[string equal ${size} "810GB"] == 1} {
                set replace "\x3c\xe9\x9a\xc0"
            } elseif {[string equal ${size} "820GB"] == 1} {
                set replace "\x3c\xe9\x99\x80"
            } elseif {[string equal ${size} "830GB"] == 1} {
                set replace "\x3c\xe9\x98\x40"
            } elseif {[string equal ${size} "840GB"] == 1} {
                set replace "\x3c\xe9\x97\x00"
            } elseif {[string equal ${size} "850GB"] == 1} {
                set replace "\x3c\xe9\x95\xc0"
            } elseif {[string equal ${size} "860GB"] == 1} {
                set replace "\x3c\xe9\x94\x80"
            } elseif {[string equal ${size} "870GB"] == 1} {
                set replace "\x3c\xe9\x93\x40"
            } elseif {[string equal ${size} "880GB"] == 1} {
                set replace "\x3c\xe9\x92\x00"
            } elseif {[string equal ${size} "890GB"] == 1} {
                set replace "\x3c\xe9\x90\xc0"
            } elseif {[string equal ${size} "900GB"] == 1} {
                set replace "\x3c\xe9\x8f\x80"
            } elseif {[string equal ${size} "910GB"] == 1} {
                set replace "\x3c\xe9\x8e\x40"
            } elseif {[string equal ${size} "920GB"] == 1} {
                set replace "\x3c\xe9\x8d\x00"
            } elseif {[string equal ${size} "930GB"] == 1} {
                set replace "\x3c\xe9\x8b\xc0"
            } elseif {[string equal ${size} "940GB"] == 1} {
                set replace "\x3c\xe9\x8a\x80"
            } elseif {[string equal ${size} "950GB"] == 1} {
                set replace "\x3c\xe9\x89\x40"
            } elseif {[string equal ${size} "960GB"] == 1} {
                set replace "\x3c\xe9\x88\x00"
            } elseif {[string equal ${size} "970GB"] == 1} {
                set replace "\x3c\xe9\x86\xc0"
            } elseif {[string equal ${size} "980GB"] == 1} {
                set replace "\x3c\xe9\x85\x80"
            } elseif {[string equal ${size} "990GB"] == 1} {
                set replace "\x3c\xe9\x84\x40"
            } elseif {[string equal ${size} "1000GB"] == 1} {
                set replace "\x3c\xe9\x83\x00"
            }
             catch_die {::patch_elf $elf $search 28 $replace} \
             catch_die {::patch_elf $elf $search 28 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
   
 
         if {$pup} {
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-quarter)} {
             log "Patching [file tail $elf] to disable searching for update packages in GAME disc"
            log "Patching emergency init to create GameOS HDD region of size quarter of installed HDD"
   
 
             set search  "\x80\x01\x00\x74\x2f\x80\x00\x00\x40\x9e\x00\x14\x7f\xa3\xeb\x78"
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
             set replace "\x38\x00\x00\x01"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
   
            set replace "\x79\x27\xf0\x82"
             catch_die {::patch_elf $elf $search 0 $replace} \
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-eighth)} {
            log "Patching emergency init to create GameOS HDD region of size eighth of installed HDD"
 
            set search "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x79\x27\xe8\xc2"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-22gb-smaller)} {
             log "Patching emergency init to create GameOS HDD region of size 22GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xfd\x40"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-10gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 10GB smaller than default"
 
            set search "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xfe\xc0"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-20gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 20GB smaller than default"
 
             set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xfd\x80"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-30gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 30GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xfc\x40"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-40gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 40GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xfb\x00"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-50gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 50GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xf9\xc0"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-60gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 60GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xf8\x80"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-70gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 70GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xf7\x40"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-80gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 80GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xf6\x00"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-90gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 90GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xf4\xc0"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-100gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 100GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xf3\x80"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-110gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 110GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xf2\x40"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-120gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 120GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
             set replace "\x3c\xe9\xf1\x00"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-130gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 130GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xef\xc0"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-140gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 140GB smaller than default"
 
            set search "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xee\x80"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-150gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 150GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xed\x40"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-160gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 160GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xec\x00"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-170gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 170GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xea\xc0"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-180gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 180GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xe9\x80"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-190gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 190GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xe8\x40"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-200gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 200GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xe7\x00"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-210gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 210GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xe5\xc0"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-220gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 220GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xe4\x80"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-230gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 230GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xe3\x40"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-240gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 240GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xe2\x00"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-250gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 250GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xe0\xc0"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-260gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 260GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xdf\x80"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-270gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 270GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xde\x40"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-280gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 280GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xdd\x00"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-290gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 290GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xdb\xc0"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-300gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 300GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xda\x80"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-310gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 310GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xd9\x40"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-320gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 320GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xd8\x00"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-330gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 330GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xd6\xc0"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-340gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 340GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xd5\x80"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-350gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 350GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xd4\x40"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-360gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 360GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xd3\x00"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-370gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 370GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xd1\xc0"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-380gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 380GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xd0\x80"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-390gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 390GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xcf\x40"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-400gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 400GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xce\x00"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-410gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 410GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xcc\xc0"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-420gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 420GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xcb\x80"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-430gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 430GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xca\x40"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-440gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 440GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xc9\x00"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-450gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 450GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xc7\xc0"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-460gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 460GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xc6\x80"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-470gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 470GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xc5\x40"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-480gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 480GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xc4\x00"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-490gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 490GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xc2\xc0"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-500gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 500GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xc1\x80"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-510gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 510GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xc0\x40"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-520gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 520GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xbf\x00"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-530gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 530GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xbd\xc0"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-540gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 540GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xbc\x80"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-550gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 550GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xbb\x40"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-560gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 560GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xba\x00"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-570gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 570GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xb8\xc0"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-580gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 580GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xb7\x80"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-590gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 590GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xb6\x40"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-600gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 600GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xb5\x00"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-610gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 610GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xb3\xc0"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-620gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 620GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xb2\x80"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-630gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 630GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xb1\x40"
 
             catch_die {::patch_elf $elf $search 28 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }
}
</syntaxhighlight>}}


=== broken_bluetooth task ===
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-640gb-smaller)} {
save as broken_bluetooth.tcl in task folder
            log "Patching emergency init to create GameOS HDD region of size 640GB smaller than default"


Allows you to remove Bluetooth firmware installation so that the MFW can be installed without a working Bluetooth board (circumventing errorcode 0x8002F1F9). This is potentially dangerous if used on a PS3 with a working BT/Wifi board, and should only be used if the BT/Wifi is broken (or abcent, like on Arcade consoles).
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xb0\x00"


{{Boxcode|code=<syntaxhighlight lang="tcl">
            catch_die {::patch_elf $elf $search 28 $replace} \
#!/usr/bin/tclsh
                "Unable to patch self [file tail $elf]"
#
        }
# ps3mfw -- PS3 MFW creator
#
# Copyright (C) Anonymous Developers (Code Monkeys)
#
# This software is distributed under the terms of the GNU General Public
# License ("GPL") version 3, as published by the Free Software Foundation.
#
   
# Priority: 2100
# Description: Allow firmware update of console with broken bluetooth
   
# Option --remove-bt-firmware: remove Bluetooth firmware (ENABLING THIS WILL REMOVE BLUETOOTH FIRMWARE)


# Type --remove-bt-firmware: boolean
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-650gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 650GB smaller than default"


namespace eval ::broken_bluetooth {
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xae\xc0"


    array set ::broken_bluetooth::options {
            catch_die {::patch_elf $elf $search 28 $replace} \
        --remove-bt-firmware false
                "Unable to patch self [file tail $elf]"
    }
   
    proc main {} {
        ::modify_upl_file ::broken_bluetooth::callback
    }
   
    proc callback { file } {
        log "Modifying XML file [file tail ${file}]"
   
        if {[package provide Tk] != "" } {
          tk_messageBox -default ok -message "Removing bluetooth firmware packages press ok to continue" -icon warning
         }
         }


         set xml [::xml::LoadFile $file]
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-660gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 660GB smaller than default"


        if {$::broken_bluetooth::options(--remove-bt-firmware)} {
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
          set xml [::remove_pkgs_from_upl_xml $xml "BT" "bluetooth firmware"]
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xad\x80"
 
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
         }
         }
   
        ::xml::SaveToFile $xml $file
    }
}
</syntaxhighlight>}}


=== Patch package installer for older (2.70) version support ===
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-670gb-smaller)} {
save as patch_nas_plugin.tcl in task folder and only select 1 allow-debug-pkg or allow-debug-pkg-270 subtask at the same time, depending on target firmware.
            log "Patching emergency init to create GameOS HDD region of size 670GB smaller than default"
{{Boxcode|code=<syntaxhighlight lang="tcl">
#!/usr/bin/tclsh
#
# ps3mfw -- PS3 MFW creator
#
# Copyright (C) Anonymous Developers (Code Monkeys)
#
# This software is distributed under the terms of the GNU General Public
# License ("GPL") version 3, as published by the Free Software Foundation.
#


# Priority: 500
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
# Description: Patch package installer
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xac\x40"


# Option --allow-pseudoretail-pkg: Patch to allow installation of pseudo-retail packages
            catch_die {::patch_elf $elf $search 28 $replace} \
# Option --allow-debug-pkg: Patch to allow installation of debug packages
                "Unable to patch self [file tail $elf]"
# Option --allow-debug-pkg-270: Patch to allow installation of debug packages (old versions, like 2.70)
        }


# Type --allow-pseudoretail-pkg: boolean
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-680gb-smaller)} {
# Type --allow-debug-pkg: boolean
            log "Patching emergency init to create GameOS HDD region of size 680GB smaller than default"
# Type --allow-debug-pkg-270: boolean


namespace eval ::patch_nas_plugin {
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xab\x00"


    array set ::patch_nas_plugin::options {
            catch_die {::patch_elf $elf $search 28 $replace} \
        --allow-pseudoretail-pkg true
                "Unable to patch self [file tail $elf]"
        --allow-debug-pkg true
         }
         --allow-debug-pkg-270 false
    }


    proc main {} {
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-690gb-smaller)} {
        set self [file join dev_flash vsh module nas_plugin.sprx]
            log "Patching emergency init to create GameOS HDD region of size 690GB smaller than default"


        ::modify_devflash_file $self ::patch_nas_plugin::patch_self
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
    }
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xa9\xc0"


    proc patch_self { self } {
            catch_die {::patch_elf $elf $search 28 $replace} \
        if {!$::patch_nas_plugin::options(--allow-pseudoretail-pkg)} {
                "Unable to patch self [file tail $elf]"
            log "WARNING: Enabled task has no enabled option" 1
        } elseif {!$::patch_nas_plugin::options(--allow-debug-pkg)} {
            log "WARNING: Enabled task 'patch_nas_plugin --allow-debug-pkg' has no enabled option" 1
        } elseif {!$::patch_nas_plugin::options(--allow-debug-pkg-270)} {
            log "WARNING: Enabled task 'patch_nas_plugin --allow-debug-pkg-270' has no enabled option" 1         
        } else {
            ::modify_self_file $self ::patch_nas_plugin::patch_elf
         }
         }
    }


    proc patch_elf { elf } {
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-700gb-smaller)} {
         if {$::patch_nas_plugin::options(--allow-pseudoretail-pkg) } {
             log "Patching emergency init to create GameOS HDD region of size 700GB smaller than default"
             log "Patching [file tail $elf] to allow pseudo-retail pkg installs"


             set search "\x7c\x60\x1b\x78\xf8\x1f\x01\x80"
             set search "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
             set replace "\x38\x00\x00\x00"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
             set replace "\x3c\xe9\xa8\x80"


             catch_die {::patch_elf $elf $search 0 $replace} \
             catch_die {::patch_elf $elf $search 28 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }


         if {$::patch_nas_plugin::options(--allow-debug-pkg) } {
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-710gb-smaller)} {
             log "Patching [file tail $elf] to allow debug pkg installs"
             log "Patching emergency init to create GameOS HDD region of size 710GB smaller than default"


             set search "\x2f\x89\x00\x00\x41\x9e\x00\x4c\x38\x00\x00\x00"
             set search "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
             set replace "\x60\x00\x00\x00"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
             set replace "\x3c\xe9\xa7\x40"


             catch_die {::patch_elf $elf $search 4 $replace} \
             catch_die {::patch_elf $elf $search 28 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
       
        if {$::patch_nas_plugin::options(--allow-debug-pkg-270) } {
            log "Patching [file tail $elf] to allow debug pkg installs"


             set search "\x2f\x89\x00\x00\x41\x9e\x00\x70\x38\x00\x00\x00"
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-720gb-smaller)} {
             set replace "\x60\x00\x00\x00"
            log "Patching emergency init to create GameOS HDD region of size 720GB smaller than default"
 
             set search "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
             set replace "\x3c\xe9\xa6\x00"


             catch_die {::patch_elf $elf $search 4 $replace} \
             catch_die {::patch_elf $elf $search 28 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }
}
</syntaxhighlight>}}
http://pastie.org/3901935


=== disable epilepsy warning ===
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-730gb-smaller)} {
Copypaste and save as patch_epilepsy.tcl
            log "Patching emergency init to create GameOS HDD region of size 730GB smaller than default"


{{Boxcode|code=<syntaxhighlight lang="tcl">
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
#!/usr/bin/tclsh
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
#
            set replace "\x3c\xe9\xa4\xc0"
# ps3mfw -- PS3 MFW creator
#
# Copyright (C) Anonymous Developers (Code Monkeys)
# Copyright (C) Ezio (For adding disabler for epilepsy message!)
# Copyright (C) mysis (For reversing and patches!)
#
# This software is distributed under the terms of the GNU General Public
# License ("GPL") version 3, as published by the Free Software Foundation.
#


# Priority: 2
            catch_die {::patch_elf $elf $search 28 $replace} \
# Description: [4.xx] Patch to disable epilepsy message
                "Unable to patch self [file tail $elf]"
        }


# Option --patch-epilepsy-cex: [4.xx] Patch to disable the epilepsy message on cex cfw!
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-740gb-smaller)} {
# Option --patch-epilepsy-dex: [4.xx] Patch to disable the epilepsy message on dex cfw!
            log "Patching emergency init to create GameOS HDD region of size 740GB smaller than default"
# Option --patch-epilepsy-rebug: [4.xx] Patch to disable the epilepsy message on rebug cfw!


# Type --patch-epilepsy-cex: boolean
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
# Type --patch-epilepsy-dex: boolean
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
# Type --patch-epilepsy-rebug: boolean
            set replace "\x3c\xe9\xa3\x80"


namespace eval ::patch_epilepsy {
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }


    array set ::patch_epilepsy::options {
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-750gb-smaller)} {
        --patch-epilepsy-cex true
            log "Patching emergency init to create GameOS HDD region of size 750GB smaller than default"
--patch-epilepsy-dex false
--patch-epilepsy-rebug false
    }


    proc main { } {
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
variable options
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\xa2\x40"


        if {$::patch_epilepsy::options(--patch-epilepsy-cex)} {
             catch_die {::patch_elf $elf $search 28 $replace} \
            set selfs {vsh.self}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs ::patch_epilepsy::patch_epilepsy_cex_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash vsh module] $selfs ::patch_epilepsy::patch_epilepsy_cex_self
}
}
        if {$::patch_epilepsy::options(--patch-epilepsy-dex)} {
            set selfs {vsh.self}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs ::patch_epilepsy::patch_epilepsy_dex_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash vsh module] $selfs ::patch_epilepsy::patch_epilepsy_dex_self
}
}
if {$::patch_epilepsy::options(--patch-epilepsy-rebug)} {
            set selfs1 {vsh.self vsh.self.swp}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs1 ::patch_epilepsy::patch1_epilepsy_rebug_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash vsh module] $selfs1 ::patch_epilepsy::patch1_epilepsy_rebug_self
}
set selfs2 {vsh.self.cexsp}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs2 ::patch_epilepsy::patch2_epilepsy_rebug_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash vsh module] $selfs2 ::patch_epilepsy::patch2_epilepsy_rebug_self
}
}
    }
proc patch_epilepsy_cex_self {self} {
if { ${::OLDROUTINE} == "1" } {
::modify_self_file $self ::patch_epilepsy::patch_epilepsy_cex_elf
} elseif { ${::OLDROUTINE} == "0" } {
::modify_self_file2 $self ::patch_epilepsy::patch_epilepsy_cex_elf
}
    }
    proc patch_epilepsy_cex_elf {elf} {
        if {$::patch_epilepsy::options(--patch-epilepsy-cex)} {
            log "Patching [file tail $elf] to disable epilepsy message on cex cfw"
log "Added by Ezio"
            set search  "\x00\x00\x00\x02\x00\x00\x00\x01\x02\x01\x01\x01\xff\xff\xff\xff"
set replace "\x00\x00\x00\x02\x00\x00\x00\x01\x02\x00\x01\x01\xff\xff\xff\xff"
             catch_die {::patch_file_multi $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }
 
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-760gb-smaller)} {
proc patch_epilepsy_dex_self {self} {
             log "Patching emergency init to create GameOS HDD region of size 760GB smaller than default"
if { ${::OLDROUTINE} == "1" } {
 
::modify_self_file $self ::patch_epilepsy::patch_epilepsy_dex_elf
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
} elseif { ${::OLDROUTINE} == "0" } {
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
::modify_self_file2 $self ::patch_epilepsy::patch_epilepsy_dex_elf
            set replace "\x3c\xe9\xa1\x00"
}
 
    }
             catch_die {::patch_elf $elf $search 28 $replace} \
    proc patch_epilepsy_dex_elf {elf} {
         if {$::patch_epilepsy::options(--patch-epilepsy-dex)} {
             log "Patching [file tail $elf] to disable epilepsy message on dex cfw"
log "Added by Ezio"
set search  "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00\xff\xff\xff\xff"
set replace "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\xff\xff\xff\xff"
             catch_die {::patch_elf $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }
 
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-770gb-smaller)} {
proc patch1_epilepsy_rebug_self {self} {
             log "Patching emergency init to create GameOS HDD region of size 770GB smaller than default"
if { ${::OLDROUTINE} == "1" } {
 
::modify_self_file $self ::patch_epilepsy::patch1_epilepsy_rebug_elf
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
} elseif { ${::OLDROUTINE} == "0" } {
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
::modify_self_file2 $self ::patch_epilepsy::patch1_epilepsy_rebug_elf
            set replace "\x3c\xe9\x9f\xc0"
}
 
    }
             catch_die {::patch_elf $elf $search 28 $replace} \
    proc patch1_epilepsy_rebug_elf {elf} {
         if {$::patch_epilepsy::options(--patch-epilepsy-rebug)} {
             log "Patching [file tail $elf] to disable epilepsy message on rebug cfw"
log "Added by Ezio"
set search  "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00\xff\xff\xff\xff"
set replace "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\xff\xff\xff\xff"
             catch_die {::patch_elf $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }
 
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-780gb-smaller)} {
proc patch2_epilepsy_rebug_self {self} {
             log "Patching emergency init to create GameOS HDD region of size 780GB smaller than default"
if { ${::OLDROUTINE} == "1" } {
 
::modify_self_file $self ::patch_epilepsy::patch2_epilepsy_rebug_elf
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
} elseif { ${::OLDROUTINE} == "0" } {
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
::modify_self_file2 $self ::patch_epilepsy::patch2_epilepsy_rebug_elf
            set replace "\x3c\xe9\x9e\x80"
}
 
    }
             catch_die {::patch_elf $elf $search 28 $replace} \
    proc patch2_epilepsy_rebug_elf {elf} {
         if {$::patch_epilepsy::options(--patch-epilepsy-rebug)} {
             log "Patching [file tail $elf] to disable epilepsy message on rebug cfw"
log "Added by Ezio"
set search  "\x00\x00\x00\x02\x00\x00\x00\x01\x02\x01\x01\x01\xff\xff\xff\xff"
set replace "\x00\x00\x00\x02\x00\x00\x00\x01\x02\x00\x01\x01\xff\xff\xff\xff"
             catch_die {::patch_elf $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }
}


</syntaxhighlight>}}
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-790gb-smaller)} {
http://www.psdevwiki.com/ps3/Patches#disable_epilepsy_message
            log "Patching emergency init to create GameOS HDD region of size 790GB smaller than default"
 
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\x9d\x40"


http://www.psx-place.com/forum/ps3-news/4-75-cfw-ferrox-standard-cex-alexander-2075-7.html#post15999
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }


https://www.sendspace.com/file/c8sj2z
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-800gb-smaller)} {
            log "Patching emergency init to create GameOS HDD region of size 800GB smaller than default"


http://pastebin.com/NULiKT5j
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\x9c\x00"


=== Patch all self/sprx to secure privacy ===
            catch_die {::patch_elf $elf $search 28 $replace} \
Copypaste and save as patch_privacy_all.tcl
                "Unable to patch self [file tail $elf]"
        }


{{Boxcode|code=<syntaxhighlight lang="tcl">
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-810gb-smaller)} {
#!/usr/bin/tclsh
            log "Patching emergency init to create GameOS HDD region of size 810GB smaller than default"
#
# ps3mfw -- PS3 MFW creator
#
# Copyright (C) Anonymous Developers (Code Monkeys)
#
# This software is distributed under the terms of the GNU General Public
# License ("GPL") version 3, as published by the Free Software Foundation.
#


# Modified and fixed by Ezio
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\x9a\xc0"


# Priority: 105
            catch_die {::patch_elf $elf $search 28 $replace} \
# Description: Patch all self/sprx to secure privacy
                "Unable to patch self [file tail $elf]"
        }


# Option --patch-playstati0n-net: Patch additional communication with playstation.net - [Warning]: use it only on 3.40-3.66 fw
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-820gb-smaller)} {
# Option --patch-playstation-net: Patch all communications with playstation.net
            log "Patching emergency init to create GameOS HDD region of size 820GB smaller than default"
# Option --patch-playstation-org: Patch all communications with playstation.org
# Option --patch-sony-com: Patch all communications with sony.com - [Warning]: use it only on 3.40-4.11 fw
# Option --patch-sony-co-jp: Patch all communications with sony.co.jp - [Warning]: use it only on 4.50 and lower fw
# Option --patch-bitwallet: Patch all communications with bitwallet.co.jp
# Option --patch-qriocity: Patch all communications with qriocity.com - [Warning]: use it only on 3.10-4.26 fw
# Option --patch-trendmicro: Patch all communications with trendmicro.com
# Option --patch-allmusic: Patch all communications with allmusic.com
# Option --patch-intertrust: Patch all communications with intertrust.com
# Option --patch-marlin-drm: Patch all communications with marlin-drm.com
# Option --patch-marlin-tmo: Patch all communications with marlin-tmo.com
# Option --patch-oasis-open: Patch all communications with oasis-open.org
# Option --patch-octopus-drm: Patch all communications with octopus-drm.com
# Option --patch-facebook: Patch all communications with facebook.com
# Option --patch-dtcp: Patch all communications with dtcp.com
# Option --patch-purl: Patch all communications with purl.org
# Option --patch-xmlsoap: Patch all communications with xmlsoap.org


# Type --patch-playstati0n-net: boolean
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
# Type --patch-playstation-net: boolean
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
# Type --patch-playstation-org: boolean
            set replace "\x3c\xe9\x99\x80"
# Type --patch-sony-com: boolean
# Type --patch-sony-co-jp: boolean
# Type --patch-bitwallet: boolean
# Type --patch-qriocity: boolean
# Type --patch-trendmicro: boolean
# Type --patch-allmusic: boolean
# Type --patch-intertrust: boolean
# Type --patch-marlin-drm: boolean
# Type --patch-marlin-tmo: boolean
# Type --patch-oasis-open: boolean
# Type --patch-octopus-drm: boolean
# Type --patch-facebook: boolean
# Type --patch-dtcp: boolean
# Type --patch-purl: boolean
# Type --patch-xmlsoap: boolean


namespace eval ::patch_privacy_all {
            catch_die {::patch_elf $elf $search 28 $replace} \
                "Unable to patch self [file tail $elf]"
        }


    array set ::patch_privacy_all::options {
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-830gb-smaller)} {
        --patch-allmusic true
            log "Patching emergency init to create GameOS HDD region of size 830GB smaller than default"
        --patch-bitwallet true
--patch-dtcp true
--patch-facebook true
        --patch-intertrust true
        --patch-marlin-drm true
        --patch-marlin-tmo true
        --patch-oasis-open true
        --patch-octopus-drm true
        --patch-playstation-net true
--patch-playstati0n-net false
        --patch-playstation-org true
--patch-purl true
        --patch-qriocity false
        --patch-sony-com false
--patch-sony-co-jp false
        --patch-trendmicro true
--patch-xmlsoap true
    }


    proc main { } {
            set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
variable options
            append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
            set replace "\x3c\xe9\x98\x40"


        if {$::patch_privacy_all::options(--patch-allmusic)} {
             catch_die {::patch_elf $elf $search 28 $replace} \
            set selfs {x3_amgsdk.sprx}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_allmusic_com_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_allmusic_com_self
}
}
        if {$::patch_privacy_all::options(--patch-bitwallet)} {
            set selfs {edy_plugin.sprx}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_bitwallet_co_jp_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_bitwallet_co_jp_self
}
}
if {$::patch_privacy_all::options(--patch-dtcp)} {
            set selfs {mintx_client.sprx}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_dtcp_com_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_dtcp_com_self
}
}
if {$::patch_privacy_all::options(--patch-facebook)} {
            set selfs {eula_net_plugin.sprx}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_facebook_com_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_facebook_com_self
}
}
        if {$::patch_privacy_all::options(--patch-intertrust)} {
            set selfs {mcore.self msmw2.sprx}
            if { ${::OLDROUTINE} == "1" } {
    ::modify_devflash_files [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_intertrust_com_self
            } elseif { ${::OLDROUTINE} == "0" } {
        ::modify_devflash_files2 [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_intertrust_com_self
}
}
        if {$::patch_privacy_all::options(--patch-marlin-drm)} {
            set selfs {mcore.self}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_marlin_drm_com_self
            } elseif { ${::OLDROUTINE} == "0" } {
    ::modify_devflash_files2 [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_marlin_drm_com_self
}
}
        if {$::patch_privacy_all::options(--patch-marlin-tmo)} {
            set selfs {mcore.self msmw2.sprx}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_marlin_tmo_com_self
            } elseif { ${::OLDROUTINE} == "0" } {
    ::modify_devflash_files2 [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_marlin_tmo_com_self
}
}
        if {$::patch_privacy_all::options(--patch-oasis-open)} {
            set selfs {mcore.self msmw2.sprx}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_oasis_open_org_self
            } elseif { ${::OLDROUTINE} == "0" } {
    ::modify_devflash_files2 [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_oasis_open_org_self
}
}
        if {$::patch_privacy_all::options(--patch-octopus-drm)} {
            set selfs {mcore.self msmw2.sprx}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_octopus_drm_com_self
            } elseif { ${::OLDROUTINE} == "0" } {
    ::modify_devflash_files2 [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_octopus_drm_com_self
}
}
if {$::patch_privacy_all::options(--patch-playstati0n-net)} {
        set selfs {sysconf_plugin.sprx}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch0_playstation_net_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch0_playstation_net_self
}
}
        if {$::patch_privacy_all::options(--patch-playstation-net)} {
        set selfs1 {libad_core.sprx libmedi.sprx libsysutil_np_commerce2.sprx}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash sys external] $selfs1 ::patch_privacy_all::patch1_playstation_net_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash sys external] $selfs1 ::patch_privacy_all::patch1_playstation_net_self
}
        set selfs2 {game_ext_plugin.sprx np_eula_plugin.sprx photo_network_sharing_plugin.sprx x3_mdimp11.sprx}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs2 ::patch_privacy_all::patch1_playstation_net_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash vsh module] $selfs2 ::patch_privacy_all::patch1_playstation_net_self
}
}
if {$::patch_privacy_all::options(--patch-playstation-net)} {
        set selfs1 {libsysutil_np_clans.sprx libsysutil_np_util.sprx}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash sys external] $selfs1 ::patch_privacy_all::patch2_playstation_net_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash sys external] $selfs1 ::patch_privacy_all::patch2_playstation_net_self
}
        set selfs2 {autodownload_plugin.sprx download_plugin.sprx esehttp.sprx eula_cddb_plugin.sprx eula_hcopy_plugin.sprx eula_net_plugin.sprx explore_category_friend.sprx explore_category_game.sprx explore_category_music.sprx explore_category_network.sprx explore_category_photo.sprx explore_category_psn.sprx explore_category_sysconf.sprx explore_category_tv.sprx explore_category_user.sprx explore_category_video.sprx explore_plugin.sprx explore_plugin_ft.sprx explore_plugin_np.sprx friendtrophy_plugin.sprx hknw_plugin.sprx nas_plugin.sprx newstore_plugin.sprx np_trophy_plugin.sprx np_trophy_util.sprx profile_plugin.sprx regcam_plugin.sprx videoeditor_plugin.sprx videoplayer_plugin.sprx videoplayer_util.sprx vsh.self x3_mdimp7.sprx}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs2 ::patch_privacy_all::patch2_playstation_net_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash vsh module] $selfs2 ::patch_privacy_all::patch2_playstation_net_self
}
}
        if {$::patch_privacy_all::options(--patch-playstation-org)} {
            set selfs {netconf_plugin.sprx sysconf_plugin.sprx}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_playstation_org_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_playstation_org_self
}
}
if {$::patch_privacy_all::options(--patch-purl)} {
            set selfs {mintx_client.sprx}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_purl_org_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_purl_org_self
}
}
        if {$::patch_privacy_all::options(--patch-qriocity)} {
            set selfs {regcam_plugin.sprx}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_qriocity_com_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_qriocity_com_self
}
}
        if {$::patch_privacy_all::options(--patch-sony-com)} {
            set selfs {eula_net_plugin.sprx}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_sony_com_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_sony_com_self
}
}
        if {$::patch_privacy_all::options(--patch-sony-co-jp)} {
            set selfs {videodownloader_plugin.sprx}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_sony_co_jp_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_sony_co_jp_self
}
}
        if {$::patch_privacy_all::options(--patch-trendmicro)} {
            set selfs {silk.sprx silk_nas.sprx}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_trendmicro_com_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_trendmicro_com_self
}
}
if {$::patch_privacy_all::options(--patch-xmlsoap)} {
            set selfs {mintx_client.sprx}
            if { ${::OLDROUTINE} == "1" } {
::modify_devflash_files [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_xmlsoap_org_self
            } elseif { ${::OLDROUTINE} == "0" } {
::modify_devflash_files2 [file join dev_flash vsh module] $selfs ::patch_privacy_all::patch_xmlsoap_org_self
}
}
    }
proc patch0_playstation_net_self {self} {
if { ${::OLDROUTINE} == "1" } {
::modify_self_file $self ::patch_privacy_all::patch0_playstation_net_elf
} elseif { ${::OLDROUTINE} == "0" } {
::modify_self_file2 $self ::patch_privacy_all::patch0_playstation_net_elf
}
    }
    proc patch0_playstation_net_elf {elf} {
        if {$::patch_privacy_all::options(--patch-playstati0n-net)} {
            log "Patching [file tail $elf] to disable communication with playstation.net"
#          playstation.net
            set search  "\x70\x6c\x61\x79\x73\x74\x61\x74\x69\x6f\x6e\x2e\x6e\x65\x74"
#          aaaaaaaaaaa.net
            set replace "\x61\x61\x61\x61\x61\x61\x61\x61\x61\x61\x61\x2e\x6e\x65\x74"
             catch_die {::patch_file_multi $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }
 
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-840gb-smaller)} {
proc patch1_playstation_net_self {self} {
             log "Patching emergency init to create GameOS HDD region of size 840GB smaller than default"
if { ${::OLDROUTINE} == "1" } {
 
::modify_self_file $self ::patch_privacy_all::patch1_playstation_net_elf
             set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
} elseif { ${::OLDROUTINE} == "0" } {
             append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
::modify_self_file2 $self ::patch_privacy_all::patch1_playstation_net_elf
            set replace "\x3c\xe9\x97\x00"
}
 
    }
             catch_die {::patch_elf $elf $search 28 $replace} \
    proc patch1_playstation_net_elf {elf} {
         if {$::patch_privacy_all::options(--patch-playstation-net)} {
             log "Patching [file tail $elf] to disable communication with playstation.net"
#          playstation.net
             set search  "\x70\x6c\x61\x79\x73\x74\x61\x74\x69\x6f\x6e\x2e\x6e\x65\x74"
#          aaaaaaaaaaa.net
             set replace "\x61\x61\x61\x61\x61\x61\x61\x61\x61\x61\x61\x2e\x6e\x65\x74"
             catch_die {::patch_elf $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }
 
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-850gb-smaller)} {
proc patch2_playstation_net_self {self} {
             log "Patching emergency init to create GameOS HDD region of size 850GB smaller than default"
if { ${::OLDROUTINE} == "1" } {
 
::modify_self_file $self ::patch_privacy_all::patch2_playstation_net_elf
             set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
} elseif { ${::OLDROUTINE} == "0" } {
             append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
::modify_self_file2 $self ::patch_privacy_all::patch2_playstation_net_elf
            set replace "\x3c\xe9\x95\xc0"
}
 
    }
             catch_die {::patch_elf $elf $search 28 $replace} \
    proc patch2_playstation_net_elf {elf} {
         if {$::patch_privacy_all::options(--patch-playstation-net)} {
             log "Patching [file tail $elf] to disable communication with playstation.net"
#          playstation.net
             set search  "\x70\x6c\x61\x79\x73\x74\x61\x74\x69\x6f\x6e\x2e\x6e\x65\x74"
#          aaaaaaaaaaa.net
             set replace "\x61\x61\x61\x61\x61\x61\x61\x61\x61\x61\x61\x2e\x6e\x65\x74"
             catch_die {::patch_file_multi $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }


proc patch_playstation_org_self {self} {
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-860gb-smaller)} {
if { ${::OLDROUTINE} == "1" } {
             log "Patching emergency init to create GameOS HDD region of size 860GB smaller than default"
::modify_self_file $self ::patch_privacy_all::patch_playstation_org_elf
 
} elseif { ${::OLDROUTINE} == "0" } {
             set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
::modify_self_file2 $self ::patch_privacy_all::patch_playstation_org_elf
             append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
}
            set replace "\x3c\xe9\x94\x80"
    }
 
    proc patch_playstation_org_elf {elf} {
             catch_die {::patch_elf $elf $search 28 $replace} \
         if {$::patch_privacy_all::options(--patch-playstation-org)} {
             log "Patching [file tail $elf] to disable communication with playstation.org"
#          playstation.org
             set search  "\x70\x6c\x61\x79\x73\x74\x61\x74\x69\x6f\x6e\x2e\x6f\x72\x67"
#          aaaaaaaaaaa.org
             set replace "\x61\x61\x61\x61\x61\x61\x61\x61\x61\x61\x61\x2e\x6f\x72\x67"
             catch_die {::patch_file_multi $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }


proc patch_sony_com_self {self} {
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-870gb-smaller)} {
if { ${::OLDROUTINE} == "1" } {
             log "Patching emergency init to create GameOS HDD region of size 870GB smaller than default"
::modify_self_file $self ::patch_privacy_all::patch_sony_com_elf
 
} elseif { ${::OLDROUTINE} == "0" } {
             set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
::modify_self_file2 $self ::patch_privacy_all::patch_sony_com_elf
             append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
}
            set replace "\x3c\xe9\x93\x40"
    }
 
    proc patch_sony_com_elf {elf} {
             catch_die {::patch_elf $elf $search 28 $replace} \
         if {$::patch_privacy_all::options(--patch-sony-com)} {
             log "Patching [file tail $elf] to disable communication with sony.com"
#          sony.com
             set search  "\x73\x6f\x6e\x79\x2e\x63\x6f\x6d"
#          aaaa.com
             set replace "\x61\x61\x61\x61\x2e\x63\x6f\x6d"
             catch_die {::patch_file_multi $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }


proc patch_sony_co_jp_self {self} {
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-880gb-smaller)} {
if { ${::OLDROUTINE} == "1" } {
             log "Patching emergency init to create GameOS HDD region of size 880GB smaller than default"
::modify_self_file $self ::patch_privacy_all::patch_sony_co_jp_elf
 
} elseif { ${::OLDROUTINE} == "0" } {
             set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
::modify_self_file2 $self ::patch_privacy_all::patch_sony_co_jp_elf
             append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
}
            set replace "\x3c\xe9\x92\x00"
    }
 
    proc patch_sony_co_jp_elf {elf} {
             catch_die {::patch_elf $elf $search 28 $replace} \
         if {$::patch_privacy_all::options(--patch-sony-co-jp)} {
             log "Patching [file tail $elf] to disable communication with sony.co.jp"
#          sony.co.jp
             set search  "\x73\x6f\x6e\x79\x2e\x63\x6f\x2e\x6a\x70"
#          aaaa.co.jp
             set replace "\x61\x61\x61\x61\x2e\x63\x6f\x2e\x6a\x70"
             catch_die {::patch_file_multi $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }


proc patch_bitwallet_co_jp_self {self} {
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-890gb-smaller)} {
if { ${::OLDROUTINE} == "1" } {
             log "Patching emergency init to create GameOS HDD region of size 890GB smaller than default"
::modify_self_file $self ::patch_privacy_all::patch_bitwallet_co_jp_elf
 
} elseif { ${::OLDROUTINE} == "0" } {
             set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
::modify_self_file2 $self ::patch_privacy_all::patch_bitwallet_co_jp_elf
             append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
}
            set replace "\x3c\xe9\x90\xc0"
    }
 
    proc patch_bitwallet_co_jp_elf {elf} {
             catch_die {::patch_elf $elf $search 28 $replace} \
         if {$::patch_privacy_all::options(--patch-bitwallet)} {
             log "Patching [file tail $elf] to disable communication with bitwallet.co.jp"
#          bitwallet.co.jp
             set search  "\x62\x69\x74\x77\x61\x6c\x6c\x65\x74\x2e\x63\x6f\x2e\x6a\x70"
#          aaaaaaaaa.co.jp
             set replace "\x61\x61\x61\x61\x61\x61\x61\x61\x61\x2e\x63\x6f\x2e\x6a\x70"
             catch_die {::patch_file_multi $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }


proc patch_qriocity_com_self {self} {
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-900gb-smaller)} {
if { ${::OLDROUTINE} == "1" } {
             log "Patching emergency init to create GameOS HDD region of size 900GB smaller than default"
::modify_self_file $self ::patch_privacy_all::patch_qriocity_com_elf
 
} elseif { ${::OLDROUTINE} == "0" } {
             set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
::modify_self_file2 $self ::patch_privacy_all::patch_qriocity_com_elf
             append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
}
            set replace "\x3c\xe9\x8f\x80"
    }
 
    proc patch_qriocity_com_elf {elf} {
             catch_die {::patch_elf $elf $search 28 $replace} \
         if {$::patch_privacy_all::options(--patch-qriocity)} {
             log "Patching [file tail $elf] to disable communication with qriocity.com"
#          qriocity.com
             set search  "\x71\x72\x69\x6f\x63\x69\x74\x79\x2e\x63\x6f\x6d"
#          aaaaaaaa.com
             set replace "\x61\x61\x61\x61\x61\x61\x61\x61\x2e\x63\x6f\x6d"
             catch_die {::patch_elf $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }


proc patch_trendmicro_com_self {self} {
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-910gb-smaller)} {
if { ${::OLDROUTINE} == "1" } {
             log "Patching emergency init to create GameOS HDD region of size 910GB smaller than default"
::modify_self_file $self ::patch_privacy_all::patch_trendmicro_com_elf
 
} elseif { ${::OLDROUTINE} == "0" } {
             set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
::modify_self_file2 $self ::patch_privacy_all::patch_trendmicro_com_elf
             append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
}
            set replace "\x3c\xe9\x8e\x40"
    }
 
    proc patch_trendmicro_com_elf {elf} {
             catch_die {::patch_elf $elf $search 28 $replace} \
         if {$::patch_privacy_all::options(--patch-trendmicro)} {
             log "Patching [file tail $elf] to disable communication with trendmicro.com"
#          trendmicro.com
             set search  "\x74\x72\x65\x6e\x64\x6d\x69\x63\x72\x6f\x2e\x63\x6f\x6d"
#          aaaaaaaaaa.com
             set replace "\x61\x61\x61\x61\x61\x61\x61\x61\x61\x61\x2e\x63\x6f\x6d"
             catch_die {::patch_file_multi $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }


proc patch_allmusic_com_self {self} {
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-920gb-smaller)} {
if { ${::OLDROUTINE} == "1" } {
             log "Patching emergency init to create GameOS HDD region of size 920GB smaller than default"
::modify_self_file $self ::patch_privacy_all::patch_allmusic_com_elf
 
} elseif { ${::OLDROUTINE} == "0" } {
             set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
::modify_self_file2 $self ::patch_privacy_all::patch_allmusic_com_elf
             append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
}
            set replace "\x3c\xe9\x8d\x00"
    }
 
    proc patch_allmusic_com_elf {elf} {
             catch_die {::patch_elf $elf $search 28 $replace} \
         if {$::patch_privacy_all::options(--patch-allmusic)} {
             log "Patching [file tail $elf] to disable communication with allmusic.com"
#          allmusic.com
             set search  "\x61\x6c\x6c\x6d\x75\x73\x69\x63\x2e\x63\x6f\x6d"
#          aaaaaaaa.com
             set replace "\x61\x61\x61\x61\x61\x61\x61\x61\x2e\x63\x6f\x6d"
             catch_die {::patch_file_multi $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }


proc patch_intertrust_com_self {self} {
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-930gb-smaller)} {
if { ${::OLDROUTINE} == "1" } {
             log "Patching emergency init to create GameOS HDD region of size 930GB smaller than default"
::modify_self_file $self ::patch_privacy_all::patch_intertrust_com_elf
 
} elseif { ${::OLDROUTINE} == "0" } {
             set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
::modify_self_file2 $self ::patch_privacy_all::patch_intertrust_com_elf
             append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
}
            set replace "\x3c\xe9\x8b\xc0"
    }
 
    proc patch_intertrust_com_elf {elf} {
             catch_die {::patch_elf $elf $search 28 $replace} \
         if {$::patch_privacy_all::options(--patch-intertrust)} {
             log "Patching [file tail $elf] to disable communication with intertrust.com"
#          intertrust.com
             set search  "\x69\x6e\x74\x65\x72\x74\x72\x75\x73\x74\x2e\x63\x6f\x6d"
#          aaaaaaaaaa.com
             set replace "\x61\x61\x61\x61\x61\x61\x61\x61\x61\x61\x2e\x63\x6f\x6d"
             catch_die {::patch_file_multi $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }


proc patch_marlin_tmo_com_self {self} {
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-940gb-smaller)} {
if { ${::OLDROUTINE} == "1" } {
             log "Patching emergency init to create GameOS HDD region of size 940GB smaller than default"
::modify_self_file $self ::patch_privacy_all::patch_marlin_tmo_com_elf
 
} elseif { ${::OLDROUTINE} == "0" } {
             set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
::modify_self_file2 $self ::patch_privacy_all::patch_marlin_tmo_com_elf
             append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
}
            set replace "\x3c\xe9\x8a\x80"
    }
 
    proc patch_marlin_tmo_com_elf {elf} {
             catch_die {::patch_elf $elf $search 28 $replace} \
         if {$::patch_privacy_all::options(--patch-marlin-tmo)} {
             log "Patching [file tail $elf] to disable communication with marlin-tmo.com"
#          marlin-tmo.com
             set search  "\x6d\x61\x72\x6c\x69\x6e\x2d\x74\x6d\x6f\x2e\x63\x6f\x6d"
#          aaaaaaaaaa.com
             set replace "\x61\x61\x61\x61\x61\x61\x61\x61\x61\x61\x2e\x63\x6f\x6d"
             catch_die {::patch_file_multi $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }


proc patch_marlin_drm_com_self {self} {
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-950gb-smaller)} {
if { ${::OLDROUTINE} == "1" } {
             log "Patching emergency init to create GameOS HDD region of size 950GB smaller than default"
::modify_self_file $self ::patch_privacy_all::patch_marlin_drm_com_elf
 
} elseif { ${::OLDROUTINE} == "0" } {
             set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
::modify_self_file2 $self ::patch_privacy_all::patch_marlin_drm_com_elf
             append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
}
            set replace "\x3c\xe9\x89\x40"
    }
 
    proc patch_marlin_drm_com_elf {elf} {
             catch_die {::patch_elf $elf $search 28 $replace} \
         if {$::patch_privacy_all::options(--patch-marlin-drm)} {
             log "Patching [file tail $elf] to disable communication with marlin-drm.com"
#          marlin-drm.com
             set search  "\x6d\x61\x72\x6c\x69\x6e\x2d\x64\x72\x6d\x2e\x63\x6f\x6d"
#          aaaaaaaaaa.com
             set replace "\x61\x61\x61\x61\x61\x61\x61\x61\x61\x61\x2e\x63\x6f\x6d"
             catch_die {::patch_file_multi $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }


proc patch_oasis_open_org_self {self} {
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-960gb-smaller)} {
if { ${::OLDROUTINE} == "1" } {
             log "Patching emergency init to create GameOS HDD region of size 960GB smaller than default"
::modify_self_file $self ::patch_privacy_all::patch_oasis_open_org_elf
 
} elseif { ${::OLDROUTINE} == "0" } {
             set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
::modify_self_file2 $self ::patch_privacy_all::patch_oasis_open_org_elf
             append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
}
            set replace "\x3c\xe9\x88\x00"
    }
 
    proc patch_oasis_open_org_elf {elf} {
             catch_die {::patch_elf $elf $search 28 $replace} \
         if {$::patch_privacy_all::options(--patch-oasis-open)} {
             log "Patching [file tail $elf] to disable communication with oasis-open.org"
#          oasis-open.org
             set search  "\x6f\x61\x73\x69\x73\x2d\x6f\x70\x65\x6e\x2e\x6f\x72\x67"
#          aaaaaaaaaa.org
             set replace "\x61\x61\x61\x61\x61\x61\x61\x61\x61\x61\x2e\x6f\x72\x67"
             catch_die {::patch_file_multi $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }


proc patch_octopus_drm_com_self {self} {
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-970gb-smaller)} {
if { ${::OLDROUTINE} == "1" } {
             log "Patching emergency init to create GameOS HDD region of size 970GB smaller than default"
::modify_self_file $self ::patch_privacy_all::patch_octopus_drm_com_elf
 
} elseif { ${::OLDROUTINE} == "0" } {
             set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
::modify_self_file2 $self ::patch_privacy_all::patch_octopus_drm_com_elf
             append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
}
            set replace "\x3c\xe9\x86\xc0"
    }
 
    proc patch_octopus_drm_com_elf {elf} {
             catch_die {::patch_elf $elf $search 28 $replace} \
         if {$::patch_privacy_all::options(--patch-octopus-drm)} {
             log "Patching [file tail $elf] to disable communication with octopus-drm.com"
#          octopus-drm.com
             set search  "\x6f\x63\x74\x6f\x70\x75\x73\x2d\x64\x72\x6d\x2e\x63\x6f\x6d"
#          aaaaaaaaaaa.com
             set replace "\x61\x61\x61\x61\x61\x61\x61\x61\x61\x61\x61\x2e\x63\x6f\x6d"
             catch_die {::patch_file_multi $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }
 
         if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-980gb-smaller)} {
proc patch_facebook_com_self {self} {
             log "Patching emergency init to create GameOS HDD region of size 980GB smaller than default"
if { ${::OLDROUTINE} == "1" } {
 
::modify_self_file $self ::patch_privacy_all::patch_facebook_com_elf
             set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
} elseif { ${::OLDROUTINE} == "0" } {
             append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
::modify_self_file2 $self ::patch_privacy_all::patch_facebook_com_elf
            set replace "\x3c\xe9\x85\x80"
}
 
    }
             catch_die {::patch_elf $elf $search 28 $replace} \
    proc patch_facebook_com_elf {elf} {
         if {$::patch_privacy_all::options(--patch-facebook)} {
             log "Patching [file tail $elf] to disable communication with facebook.com"
#          facebook.com
             set search  "\x66\x61\x63\x65\x62\x6f\x6f\x6b\x2e\x63\x6f\x6d"
#          aaaaaaaa.com
             set replace "\x61\x61\x61\x61\x61\x61\x61\x61\x2e\x63\x6f\x6d"
             catch_die {::patch_elf $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-990gb-smaller)} {
    proc patch_dtcp_com_self {self} {
             log "Patching emergency init to create GameOS HDD region of size 990GB smaller than default"
if { ${::OLDROUTINE} == "1" } {
 
::modify_self_file $self ::patch_privacy_all::patch_dtcp_com_elf
             set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
} elseif { ${::OLDROUTINE} == "0" } {
             append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
::modify_self_file2 $self ::patch_privacy_all::patch_dtcp_com_elf
            set replace "\x3c\xe9\x84\x40"
}
 
    }
             catch_die {::patch_elf $elf $search 28 $replace} \
    proc patch_dtcp_com_elf {elf} {
if {$::patch_privacy_all::options(--patch-dtcp)} {
             log "Patching [file tail $elf] to disable communication with dtcp.com"
#          dtcp.com
             set search  "\x64\x74\x63\x70\x2e\x63\x6f\x6d"
#          aaaa.com
             set replace "\x61\x61\x61\x61\x2e\x63\x6f\x6d"
             catch_die {::patch_elf $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }
 
        if {$::patch_emer_init::options(--patch-emer-init-gameos-hdd-region-size-1000gb-smaller)} {
proc patch_purl_org_self {self} {
             log "Patching emergency init to create GameOS HDD region of size 1000GB smaller than default"
if { ${::OLDROUTINE} == "1" } {
 
::modify_self_file $self ::patch_privacy_all::patch_purl_org_elf
             set search  "\xe9\x21\x00\xa0\x79\x4a\x00\x20\xe9\x1b\x00\x00\x38\x00\x00\x00\x7d\x26\x48\x50"
} elseif { ${::OLDROUTINE} == "0" } {
             append search "\x7d\x49\x03\xa6\x39\x40\x00\x00\x38\xe9\xff\xf8"
::modify_self_file2 $self ::patch_privacy_all::patch_purl_org_elf
            set replace "\x3c\xe9\x83\x00"
}
 
    }
             catch_die {::patch_elf $elf $search 28 $replace} \
    proc patch_purl_org_elf {elf} {
if {$::patch_privacy_all::options(--patch-purl)} {
             log "Patching [file tail $elf] to disable communication with purl.org"
#          purl.org
             set search  "\x70\x75\x72\x6c\x2e\x6f\x72\x67"
#          aaaa.com
             set replace "\x61\x61\x61\x61\x2e\x63\x6f\x6d"
             catch_die {::patch_elf $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
    }
 
        if {$::patch_emer_init::options(--patch-emer-init-disable-pup-search-in-game-disc)} {
proc patch_xmlsoap_org_self {self} {
             log "Patching emergency init to disable searching for update packages in GAME disc"
if { ${::OLDROUTINE} == "1" } {
 
::modify_self_file $self ::patch_privacy_all::patch_xmlsoap_org_elf
             set search  "\x80\x01\x00\x74\x2f\x80\x00\x00\x40\x9e\x00\x14\x7f\xa3\xeb\x78"
} elseif { ${::OLDROUTINE} == "0" } {
             set replace "\x38\x00\x00\x01"
::modify_self_file2 $self ::patch_privacy_all::patch_xmlsoap_org_elf
 
}
             catch_die {::patch_elf $elf $search 0 $replace} \
    }
    proc patch_xmlsoap_org_elf {elf} {
if {$::patch_privacy_all::options(--patch-xmlsoap)} {
             log "Patching [file tail $elf] to disable communication with xmlsoap.org"
#          xmlsoap.org
             set search  "\x78\x6d\x6c\x73\x6f\x61\x70\x2e\x6f\x72\x67"
#          aaaaaaa.com
             set replace "\x61\x61\x61\x61\x61\x61\x61\x2e\x63\x6f\x6d"
             catch_die {::patch_file_multi $elf $search 0 $replace} \
                 "Unable to patch self [file tail $elf]"
                 "Unable to patch self [file tail $elf]"
         }
         }
Line 1,513: Line 1,841:
}
}


</syntaxhighlight>}}
</pre>


== Using console / shellscript ==
== Using console / shellscript ==
Line 1,519: Line 1,847:
By using commandline switches you can preset every task there is, plus the source PUP, destination PUP and debug settings.
By using commandline switches you can preset every task there is, plus the source PUP, destination PUP and debug settings.


===Example of PS3MFW Builder 0.2 tasks===
Example of PS3MFW Builder 0.2 tasks:
{{Keyboard|content=<syntaxhighlight lang="bash">
ps3mfw.exe %1 "Y:\PS3-Firmwares" "Z:/PS3MFW-out/test.pup" --change_version --add_license_msg --patch_lv1 --patch_lv2 --patch_nas_plugin --patch_privacy --patch_vsh --patch_category_game --spoof_version --debug true
ps3mfw.exe %1 "Y:\PS3-Firmwares" "Z:/PS3MFW-out/test.pup" --change_version --add_license_msg --patch_lv1 --patch_lv2 --patch_nas_plugin --patch_privacy --patch_vsh --patch_category_game --spoof_version --debug true
</syntaxhighlight>}}
 
===Example of PS3MFW Builder with OtherOS++ tasks===
(in this case tasks that fail with FW 3.15 are disabled/not selected)
{{Keyboard|content=<syntaxhighlight lang="bash">
ps3mfw.exe %1 "Y:\PS3-Firmwares\" "Z:/MFWOtherOS-out/test.pup" --change_version --add_license_msg --patch_lv1 --patch-lv1-dispmgr-access false --patch-lv1-otheros-plus-plus false --patch_lv2 --patch-emer-init --patch_category_game --patch-package-files true --patch-app-home true --patch_nas_plugin --allow-pseudoretail-pkg true --allow-debug-pkg true --patch_vsh --allow-unsigned-app true --patch_privacy --debug true
</syntaxhighlight>}}
 
===Example of PS3MFW Builder using shell file===
https://github.com/euss/mfw/blob/master/build_cfw_355.sh
 
===Example of PS3MFW Builder 0.2.3 tasks===
{{Keyboard|content=<syntaxhighlight lang="bash">
ps3mfw.exe %1 "Y:\PS3-Firmwares\OFW430.PUP" ""Z:/MFWOtherOS-out/MFW430.PUP" --gui false --debug true --patch_pup --pup-build "" --version-string "" --version-suffix "PSDEVWIKI" --patch_lv1 --patch-lv1-peek-poke true --patch-lv1-remove-lv2-protection true --patch-lv1-sysmgr-disable-integrity-check-4x true --patch-lv1-coreos-hash-check true --patch_cos --patch-lv0-coreos-ecdsa-check true --patch-spkg-ecdsa-check true --patch-pup-search-in-game-disc true --patch-lv2-peek-poke-4x true --patch-lv2-lv1-peek-poke-4x true --patch-lv2-npdrm-ecdsa-check true --patch-lv2-payload-hermes-4x true --patch-lv2-SC36-4x true --patch_xmb --add-install-pkg true --patch-act-pkg true --add-hb-seg true --patch-app-home true --patch-ren-apphome true --patch-alpha-sort true --patch-rape-sfo true --patch_vsh --allow-pseudoretail-pkg true --allow-debug-pkg true --patch-vsh-react-psn-v2-4x true
</syntaxhighlight>}}


== FAQ ==
Example of PS3MFW Builder with OtherOS++ tasks (in this case tasks that fail with FW 3.15 are disabled/not selected):
*Error: User wants an /insert well known 'CFW' e.g. Kmeaw/ like MFW firmware or use that as source PUP
ps3mfw.exe %1 "Y:\PS3-Firmwares\" "Z:/MFWOtherOS-out/test.pup" --change_version --add_license_msg --patch_lv1 --patch-lv1-dispmgr-access false --patch-lv1-otheros-plus-plus false --patch_lv2 --patch-emer-init --patch_category_game --patch-package-files true --patch-app-home true --patch_nas_plugin --allow-pseudoretail-pkg true --allow-debug-pkg true --patch_vsh --allow-unsigned-app true --patch_privacy --debug true
:Solution: Take official firmware and select the following tasks accordingly to your target requirements:
::- Patched LV1 hypervisor to allow mapping of any needed memory area (Wutangrza, Waninkoko, Kmeaw, graf_chokolo)<br />
::- Patched LV2 kernel to add Peek&Poke system calls to LV2 (Wutangrza, Waninkoko, Kmeaw, graf_chokolo)<br />
::- Patched PKG installer to allow installation of pseudo-retail + debug PKGs (geohot, Waninkoko, kmeaw)<br />
::- Patched Application launcher to allow running of unsigned applications (Waninkoko)<br />
::- Add new icons to XMB to add Install PKGs + /app_home (KaKaRoTo, geohot Waninkoko, Kmeaw)<br />


*Error: Error running script: invalid command name "34" and/or Error running script: invalid command name "35" (when using Kmeaw, Rebug etc as input PUP and selecting privacy [34] and/or spoof [35])
:Solution: Take official firmware and use the solution mentioned above


== Road beyond 3.55 ==
* [http://www.ps3hax.net/showthread.php?t=50120 Unofficial MFW Builder 0.2.3 PRE-Release by cfwprophet @ PS3Hax]


== Reference ==
== Reference ==
Line 1,562: Line 1,864:


== Downloads / precompiled & source ==
== Downloads / precompiled & source ==
*Quick build scripts:
**For Debian/Ubuntu: http://www.pastie.org/2117364
**For Debian/Archlinux/RHEL: http://pastie.org/private/6qd9gvzohdm7ivnxuibsg
*Git source (including W32 precompiles of ps3tools) : https://github.com/euss/mfw


{{missingfiles}}
*Ubuntu precompiled build: [http://www.megaupload.com/?d=R2MHUZ2S ps3mfw.gibrew.8-11-11.ubuntu.zip] (by nevik)


*Ubuntu precompiled build: <span style="text-decoration: line-through;">[http://www.megaupload.com/?d=R2MHUZ2S ps3mfw.gibrew.8-11-11.ubuntu.zip]</span> (by nevik)
*Windows precompiled build of release v0.2 with ps3keys and tools: [http://www.multiupload.com/QSFVE64T72 ps3mfw-w32_portable.rar (4.4 MB)] (pretested Windows 7 / XP)


*Windows precompiled build of release v0.2 with ps3keys and tools: <span style="text-decoration: line-through;">[http://www.multiupload.com/QSFVE64T72 ps3mfw-w32_portable.rar (4.4 MB)]</span> (pretested Windows 7 / XP)
*Old Windows precompiled build of release v0.1: [http://www.multiupload.com/RPC4L254H7 PS3MFW_0.1-win.rar (4.34 MB)]
 
*Old Windows precompiled build of release v0.1: <span style="text-decoration: line-through;">[http://www.multiupload.com/RPC4L254H7 PS3MFW_0.1-win.rar (4.34 MB)]</span>


* Apple MAC OSX v0.2:
* Apple MAC OSX v0.2:
**<span style="text-decoration: line-through;">[http://www.multiupload.com/9G6FAH46DC PS3mfw.V.02.gitbrew.8-1-11.tasks.zip (4.15 MB)]</span> (Intel)
**[http://www.multiupload.com/9G6FAH46DC PS3mfw.V.02.gitbrew.8-1-11.tasks.zip (4.15 MB)] (Intel)
**<span style="text-decoration: line-through;">[http://www.multiupload.com/MMK3TGS0CV PS3mfwV.02.ppc.OsX.gitbrew.8-1-11.tasks.zip (4.14 MB)]</span> (PPC)
**[http://www.multiupload.com/MMK3TGS0CV PS3mfwV.02.ppc.OsX.gitbrew.8-1-11.tasks.zip (4.14 MB)] (PPC)


* Gitbrew ps3tools (dd aug 18 2011):
* Gitbrew ps3tools (dd aug 18 2011):
** for Linux and MACOSX (Intel&PPC) : <span style="text-decoration: line-through;">[http://www.multiupload.com/JWLFSBHVCO Mac-Linux-tools.zip (6.8 MB)]</span> (thanks to nevik :) )
** for Linux and MACOSX (Intel&PPC) : [http://www.multiupload.com/JWLFSBHVCO Mac-Linux-tools.zip (6.8 MB)] (thanks to nevik :) )
** for Win7-x64 (needs Cygwin 1.7.x) : <span style="text-decoration: line-through;">[http://www.multiupload.com/SKXTCK85YV Win7-x64-tools.zip (1.05 MB)]</span> (thanks to nevik :) )
** for Win7-x64 (needs Cygwin 1.7.x) : [http://www.multiupload.com/SKXTCK85YV Win7-x64-tools.zip (1.05 MB)] (thanks to nevik :) )
** for Windows x86 and x64 (contains cygwin DLL and other files needed) : <span style="text-decoration: line-through;">[http://www.multiupload.com/LX5K5TEHZS Windows-x86-x64-ps3tools.rar (2.01 MB)]</span>
** for Windows x86 and x64 (contains cygwin DLL and other files needed) : [http://www.multiupload.com/LX5K5TEHZS Windows-x86-x64-ps3tools.rar (2.01 MB)]


*Old MAC OSX precompiled build of release v0.1: <span style="text-decoration: line-through;">[http://www.multiupload.com/HIX10I5KRL PS3MFW_0.1.dmg (9.04 MB)]</span>
*Old MAC OSX precompiled build of release v0.1: [http://www.multiupload.com/HIX10I5KRL PS3MFW_0.1.dmg (9.04 MB)]


*Quick build scripts:
**For Debian/Ubuntu: http://www.pastie.org/2117364
**For Debian/Archlinux/RHEL: http://pastie.org/private/6qd9gvzohdm7ivnxuibsg


{{Custom Firmware}}<noinclude>[[Category:Main]]</noinclude>
*Git source : http://git-hacks.com/ps3mfw
Please note that all contributions to PS3 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS3 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)