Dash Launch 2.32
----------------

It's been a long fun road full of headaches and cheers, and I'm glad you all
joined me on this journey. 2.32 marks the end of my work on this project as
well as bringing fast patch updates for new versions to other projects now that
the expert-tease of 3rd party product providers steps up to provide... well
that remains to be seen, but look to them when the next update rolls out.

Just a little bonus, its not documented elsewhere but was being worked on as
the next feature, and as it stands it is incomplete. fakelive=true, see what
happens when you use a live account to start an app. There, that is my expert-
tease to punctuate the last 2.5 years of work, and I didn't even try to sell
you a damned thing ;)

****
    at time of this writing, this is ONLY compatible with:
    jtag  : 9199, 12611, 12625, 13146, 13599, 13604, 14699, 14717, 14719
    glitch: 13599, 13604, 14699, 14717, 14719

    read info_launch.ini for info on options and setting launch parameters.
****

================================================================================
    important note about the new keyswitcher
================================================================================
    Retail encrypted xex that are not validly signed will not load due
    to the way the new keyswitcher works.

================================================================================
    Overview - what it does
================================================================================
- It will launch a XeX or CON file from the path you specified in launch.ini
    as long as it's valid
- Depending on the button you hold when the xbox is trying to load the NXE, it
    will divert to the xex/con tied to that button or return to default as
    defined in launch.ini
- At boot time it is possible to subvert default item and/or NXE loading, but
    you must wait until the controller syncs to do so, and the controller must
    sync to the top left quadrant (player 1.)
- Depending which button is held when closing miniblade in NXE (use Y button to
    close, release then hold a QL button) it will quick launch a CON or XEX
    from your ini file
- allows one to patch kernel/xam at bootup with a freeBOOT patch style bin file
    from usb or hdd (in that order) must be in root of the device and be named
    "kxam.patch" and be no larger than 0x4000 bytes. Again, kxam.patch binary
    format is the same as a compiled freeboot patch bin, but uses real virtual
    addresses rather than offsets - see 1.0 release for a windows patch builder
- with the included patch set, launch.xex acts as a helper to detect when
    xbox1 emulator loads, allowing memory unlock patch and xbox1 emulator
    to function together

================================================================================
    Installation
================================================================================
- have the required freeboot version installed on the console

- get the installer to a place where you can run it, and do so. Follow onscreen
    instructions. The installer will prompt you if it needs to update the 
    freeboot patches and will give you an opportunity to configure the new
    options

- edit and place launch.ini where you would like it, see note below as well
    **See inlcuded sample and the info ini which describes the options allowed**

note: the installer includes upgrade paths for dash launch 1.0 users, it will
    optionally update launch.ini files wherever found to use the new path names

================================================================================
    Updaters and Avatars
================================================================================
- this version of dash launch contains an update blocker that is enabled by
    default. There are two ways around this if you wish to install the bits and
    pieces used by the dash for kinect and avatars
    1 - place the updater that matches this version on removable media, and
        rename the folder from $SystemUpdate to $$ystemUpdate
        ----OR----
    2 - place an ini where dash launch can find it and set the noupdater option
        to false - noupdater = false
****
NOTE that some games WILL prompt you to update the console if avatars are
    not installed, this doesn't mean they have an update to actually put in, it
    just means it needs avatar/kinect bins/resources to run
****

================================================================================
    LIVEblocker
================================================================================
- if you are like me, and keep your consoles off the net then this option is
    for you. It's capable of blocking the resolution of the LIVE specific
    servers and does so by default, with an additional option in the ini file
    it will attempt to block access to all MS servers. The default option is
    set up to block only LIVE servers, which still allows programs like FSD to
    access covers and such. The blocks lists are:

    weak:
        ^xemacs.xboxlive.com$
        ^xeas.xboxlive.com$
        ^xetgs.xboxlive.com$
        ^xexds.xboxlive.com$
        ^piflc.xboxlive.com$
        ^siflc.xboxlive.com$
        ^notice.xbox.com$
        ^macs.xbox.com$
        ^rad.msn.com$
        passport.net$

    strong:
        xboxlive.com$
        xbox.com$
        nsatc.net$
        microsoft.com$
        passport.net$
        bing.net$
        msn.com$
    
    where:
        somedomain.com$ = ends with somedomain.com
        ^somesub.somedomain = starts with somesub.somedomain
        ^somesub.somedomain.com$ = is exactly somesub.somedomain.com

================================================================================
    Important - going to NXE
================================================================================
- if you need to go back to NXE and have default item set in ini, HOLD RB while
    exiting game via miniblade or exit using one of the miniblade options like 
    family settings or system settings

================================================================================
    INI notes
================================================================================
-it's possible to have multiple ini files, priority is: USB, HDD, BB MU, FLASH
    (** it is NOT recommended to launch USB con/xex from hdd ini **)
    the first one found on the devices in that order will be the one used.
    -see http://code.jellycan.com/simpleini/ for more info on the ini parser

-if you find your ini file is not working, open it in a hex editor and ensure
    that windows didn't convert it to a non-ASCII format by putting identifyer
    bytes at the beginning of the file. The first charater in a hex editor
    should be whatever the first character you have in the ini file, not 
    non-character codes like 0xFF or similar

================================================================================
    Caveats
================================================================================
The work herein is presented as-is, any risk is solely the end users
    responsibility. While all of us are sorry when unforseen things happen, not
    every situation or mistake can be accounted for before they have been
    spotted. Please use responsibly.

================================================================================
    Thanks
================================================================================
-Big thanks to those who opened the way and those who made it even more usable.
-Thanks to Tux, Arbiter, stk, the2000, Corrupted, tk_saturn and Toddler for all
    the bugs you caught trying to sneak by!
-Thanks AmyGrrl for passing along the glitch and new ideas
-Thanks to Tux, Ironman, JPizzle and Dionis Fernandez for helping procure a
    Jasper big block console to extend testing and fix NAND MU corruption bug
    Dionis - you went above and beyond!
-Thanks to vgcrepairs for providing the cygnos, dash launch likely wouldn't 
    exist without one.
-Thanks to FBDev and mojobojo for the data used for the patch options
-Thanks to sm32
-Thanks to unknown, you know why
-Extra Special thanks to SpkLeader, Boflc, and LordXBig!
-Big thanks to Swizzy, the least bit for debugging readmes!
-Thanks to fbbuild, keeping us on our toes and up to date!
-Thanks to xbox-scene for always putting up a release thread announce!
-Greetz to XeDev and RgLoader
-shouts out to E Nellie and D33per, this a sourceless release!

~brought to you by cOz~
//2012

================================================================================
    Known Bugs
================================================================================
- Thanks to excellent testers, none were corned by the time of this writing. If
    you find any during use, find the release thread at xbox-scene and please
    report them there.
- in freestyle 1.7 and earlier, there was a minor glitch that caused console
    crashing for some people under rare circumstances, if you haven't updated
    to RC1.8 or newer please do so.
- corrupt games when launched return to NXE to display the corrupt game UI

================================================================================
    ChangeLog
================================================================================
v2.32
- fixed glitch jasper big block patch installer
- reworked contpatch yet again, should perform equal to xm360 now (thanks node21!)
   - new patch only operates on containers of type 000D0000 (XBLA) and 00000002 (ADDONS) of LIVE or PIRS types

v2.31
- revert contpatch to older form
- signnotice now defaults to FALSE/disabled
- signnotice option should no longer wind up in network troubleshooter on 14717+
- add 14719

v2.30
- fixed uart debug output 0xD 0xA instead of 0xA 0xD
- STOP code 0x2B can now output stack info
- xex header revoke check (requires live to download revoke list) flag now ignored (hv and xam patch)
- add 14717

v2.29
- expanded temp broadcaster to include PE Name and path of current title
- added titleid and mediaid output to temp logger
- fixed a bug in unhandled-exception handler (could cause freeze/multiple consecutive exceptions)
- add title module PE name and path to exception log
- contpatch completely rewritten, now takes over checking license bits entirely for xam when enabled
    (may break... things, or allow some to work that shouldn't/crash)

v2.28
- added rad.msn.com to weak blocklist
- added *bing.net, *msn.com to strong blocklist
- added glitch machine detection for xellLaunch to launch on flash xell-1f
- added xhttp auth patch for 14699 (thanks Anthony!)
- added signin notice dismiss (optionally disabled, only affects 'ok' type dialogs)
- added intMu: to installer ini updater
- added autoselect shutdown and auto off option for the "hold guide to shutdown"
    NOTE: that both these options can affect other things that use this type of dialog!
- added optional temp broadcaster
- added quick python script to cap temp broadcasts to a .csv file

v2.27
- removed FCRT patch (was not compatible with 1175 drives)
- installer: revise patch checks to only check base patches
- installer: conform to xebuild's base+patch extension method, copies addon patches to
    base as needed
- add 14699

v2.26
- correct jtag/glitch wording in installer patch updater
- fix compare with glitch machine, now accurate when it checks patches for update
- add fcrt removal patch (and correction)
- rebuild to hopefully improve stability (less optimization)
- changed contpatch to only patch ID bytes to 0xFF
- fix sonic, more thoroughly hooked disk verification (thanks again Nate!)
- add current launch.xex version display to installer, add versioning
- add note about encryption on modified retail xex
- added '$' to permitted chars in launch.xex ini parser

v2.25
- added Trinity arcade memory unit to dash launch as IntMu:
- can update ggBuild type patch sets
- add 13604
- patches updated to remove E66 (dvd code exec) errors in kernel

v2.24
- hddalive was defaulted to true instead of false, fixed
- xell launch now shuts off usb device (fixes issues with xell reloaded)
- xell launch simplified to allow for variable sized xell bins
- added jtag debug support to patches and export var (thanks Nate!)
- reworked devkit signed xex loading. Faster, dll dev xex working again (thanks Anthony!)
- fix forza 4 (and maybe others - thanks Nate!)

v2.23
- added hddalive (2.23b fixes this)
- added 13599
- relocate external files so old files will no longer be used accidentally
    new path is \default.xex dir\VERSION\files
    ie: GAME:\13599\patches_jasper.bin

v2.22
- resolving 'localhost' when the router forwards it to the internet or there is
    no network at all... bad idea game devs... fixed (Yars', maybe others)
- button handler now more reliably removes Y and A mishandling when held on
    miniblade exits
- added new note to readme regarding update prompts and avatar data missing
- hopefully extracted new games are now working fine, instead of GOD only
- potential bug corrected in 12611/12625 patch sets
- add 13146 compatibility
- all patch sets updated to fully remove xex bound checks (ie: default.xex
    on root of USB causing E71)
- "remotenxe" option added to ini(thx adihash!)
- windows button on remote always boots to NXE/media center now(thx adihash!)
- added "guide" and "power" path options to set boot time default override
- changed kxam.patch, first .long must be the kernel version the patches match
- added a check to kxam.patch data to abort on invalid address
- added "nohud" option
- added installer check to verify at least the 1BL segment of patches before
    installing, will re-ask and warn of possible corruption/brick

v2.21
- fixed noupdater option, readme is accurate with regards to updates now (sorry)
- fixed dvdexitdash option, no longer conflicts with using miniblade to exit NXE
    should only affect DVD launched from NXE (note this affects DVD games too)
- fixed a glitch with unhandled exception logging when occurs in kernel
- revert to original fileExist() method

v2.20
- export option info along with the rest of dash launch info struct export
- add multi version compatibility to installer and plugin
- add 12625 patch set and offsets
- new LIVE content hook patching, does auto yaris swap as well as extracted XBLA 
    should work more consistently (hopefully)
- added unhandled exception handler, dumps except info to UART/file and exits
    to dash/default item when apps don't have their own exception handler
    (instead of crash), disable by setting 'exchandler = false' in ini file.
- added ini path setting (dumpfile) for capturing crash logs to a file,
    capture device must be connected at console boot time
- added 'safereboot' option for those who have JTAG that have applied
    blackaddr's smc reboot fix, instead of 'hard' reboot
- added option to enable debug strings to print to UART
- adjusted patches to remove default UART hooking (less chance of string
    collision/overlap using DbgPrint via debug out option)
- corrected a bug in the flasher ini update settings in regard to noupdater,
    it was setting nosysexit instead of noupdater value
- added live "blocker", reroutes requests to resolve DNS names to loopback
- added "livestrong" option to use an alternate list of DNS to block
- added ini option to set how long buttons are watched for at boot time
- embedding current versions external files into installer, no more messy
    directory; original paths still work and take priority over embedded files 

v2.11
- fixed xbox1 launches (thanks folks at x-s and fsd for reporting)

v2.10
- reworked hooking to be a bit more dynamic and simpler to update
- ini parser fixed, glitch when comment line last line with no blank line after
    (thanks Toddler!)
- disables updaters (DA2 and other disks; safety)
- minor tweaks to boot time delays, further improves on previous autologin issue

v2.09 (beta)
- moved strictly to C, much smaller DLL
- correct bug with busy CON/sometimes ignoring ini for boot time default item
- made boot time quick launch buttons more reliable
- added 1s delay to resolve autologin at boot issue and slower USB hdd issues
- patches updated to remove min version check (DA2)

v2.08
- correcting for a glitch where launchdata should be cleared between titles but
   isn't; fixes launching some games twice in a row (thanks stk and FSD!)

v2.07
- fixed media center extender (thanks jester and antman)
    ~hopefully this is the last whitelist option needed
- added option "nosysexit" (thanks rhai)

v2.06
- update to fbbuild 0.11 patches
- fixed bug with fatal freeze options
- changed installer to use zeropair CB version to determine patch set
- added new options dvdexitdash and xblaexitdash (thanks AmyGrrl)
- added regionspoof, dvdexitdash and xblaexitdash to ini updater
- added instructions to this readme regarding boot time buttons and diagnosing
    non-ASCII ini files

v2.05
- added AP25 xex priveledge filter (fix AC:B GOD/xex, maybe others)

v2.04
- fixed a glitch with launching kinect games when a default item is set

v2.03
- updated for 12611

v2.02
- added version info to data struct exported at ordinal 1
- made number of times button holds are scanned variable, longer window
    at boot time to sync controller and hold a button
- added region spoofing for XGetGameRegion
- DVD video play from NXE now plays DVD regardless of default setting
    (thanks krizalid!)

v2.01
- corrected flash mu mount point (thanks Antho02 at l-s)
- added kernel version check to installer as some xbr using folks seem incapable
    of reading the first line of this file

v2.0
- plugins now use logical paths just like quick launch buttons
- added common (9199) content and ping limit patches as options
- mostly runs in system threads, startup completes while bootanim runs
- completely subverted dash.xex, no more CD issues or NXE split seconds
- removed insistance on 0/1/2 paths and reliance on CaPs to detect
- return to NXE via miniblade for system settings and others works w/o using RB
- added big block NAND mu as possible device
- optionally subvert Y to exit miniblade while in NXE to load button/default
- added xell loader to patch set and included a xex to load xell
- removed reboot on fatal error from patches
- included reboot/shutdown on fatal error as settings
- installer onscreen output cleaned up, now shuts down console at end of install
- added ini file updater to installer
- added patch updater to installer

v1.0
- added other devices for launch targets
- added flash for location to load launch.ini
- added flash installer supports flashing launch.xex and launch.ini
- with help of freeboot patches, fixes issues with xbox1 emulator on memory
    unlocked patchset
- overhaul ini parser with simpleIni, support for most buttons and a default
- added dll/plugin loading support
- added hooking/return to launch app instead of NXE (hold RB to bypass)
- added kernel/xam boot time/one time patch engine
- added export to allow the loading of other system modules
- if you think I'm quitting at 232 you're more retarded than you look

v0.02
- added a small delay to allow XBR users to launch CON
- implemented a simple ini file parser and fileExist
- auto detects LIVE and XEX2 to use the appropriate launch method
- fails to dash reliably now

v0.01
-initial release
