Skip to content

Instantly share code, notes, and snippets.

@Ailothaen
Created April 2, 2023 13:42
Show Gist options
  • Select an option

  • Save Ailothaen/2407e5eec122fd1feb4a33cde04eb4c7 to your computer and use it in GitHub Desktop.

Select an option

Save Ailothaen/2407e5eec122fd1feb4a33cde04eb4c7 to your computer and use it in GitHub Desktop.

Revisions

  1. Ailothaen created this gist Apr 2, 2023.
    383 changes: 383 additions & 0 deletions OriSaveFileFixer.ps1
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,383 @@
    ##########################################################################
    # This Script was created by #
    # http://steamcommunity.com/id/MartinLenord #
    # For more info or if you have any questions see #
    # http://steamcommunity.com/app/261570/discussions/0/618456760272262183/ #
    ##########################################################################

    ########################################################################
    # WARNING: This script could damage your save file please back them up #
    ########################################################################

    # Check save location
    if (Test-Path -Path ($env:LOCALAPPDATA + "\Ori and the Blind Forest\")) {
    $saveLocation = $env:LOCALAPPDATA + "\Ori and the Blind Forest\"
    } else {
    $saveLocation = $env:USERPROFILE + "\Ori and the Blind Forest\"
    }

    # Default to non existant save
    $saveNumber = 100

    # Keep asking for save file until a valid number is entered
    while(1 -eq 1) {
    # Prompt for save file
    $saveNumberRaw = Read-Host 'Which save do you want to modify? (A number from 1 to 10) '
    $saveNumber = 0 + $saveNumberRaw - 1
    if (Test-Path -Path ($saveLocation + "saveFile" + $saveNumber + ".sav")) {
    break
    }
    "Failed to find save slot " + $saveNumberRaw + ". Try another slot"
    }
    " "

    # Open save file
    $bytes = [System.IO.File]::ReadAllBytes($saveLocation + "saveFile" + $saveNumber + ".sav")

    # Backup save file
    "Backing up save file to: " + $saveLocation + "saveFile" + $saveNumber + ".backup.sav"
    [System.IO.File]::WriteAllBytes($saveLocation + "saveFile" + $saveNumber + ".backup.sav", $bytes)
    "Backup success!"

    # Location GUID
    $locationGUID = @(0xE9,0x54,0xCA,0x55,0xA3,0x74,0xA6,0x4A,0x99,0x55,0x4E,0x8E,0xB7,0xEA,0x1A,0x32)

    # Locations
    $grove = @(0x08,0xC8,0x1D,0xB9,0x80,0x41,0x7F,0xB6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0xDA,0xDB,0xBE,0xC2,0xF7,0xBC,0xEF,0xC2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xBF,0x00,0x00,0x00,0x00,0x01,0x00,0x01,
    0x01,0x01,0xA0,0x34,0xD0,0xBC,0xD5,0xEA,0x7F,0x3F,0x00,0x00,0x00,0x00,0x01,0x00,0xAB,0x31,0xD0,0x3C,0xD6,0xEA,0x7F,
    0xBF,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x80,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)

    $fire = @(0x9C,0x5A,0x51,0x3A,0xB0,0x29,0x0D,0xB9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x42,0xDD,0x85,0x43,0x39,0xDD,0x29,0xC1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xBF,0x00,0x00,0x00,0x00,0x01,0x00,0x01,
    0x01,0x01,0x05,0x37,0x2A,0x3E,0x40,0x70,0x7C,0x3F,0x00,0x00,0x00,0x00,0x01,0x00,0x30,0x37,0x2A,0xBE,0x3E,0x70,0x7C,
    0xBF,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
    0x80,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)

    $swamp = @(0xF1,0xD4,0x63,0xBA,0xD0,0x84,0xA6,0xB7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0xEB,0x06,0xF7,0x43,0xBD,0x9F,0x94,0xC2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xBF,0x00,0x00,0x00,0x00,0x01,0x00,0x01,
    0x01,0x01,0x2A,0xB8,0xBA,0xBC,0xFA,0xEE,0x7F,0x3F,0x00,0x00,0x00,0x00,0x01,0x00,0x2E,0xED,0xBA,0x3C,0xF1,0xEE,0x7F,
    0xBF,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
    0x80,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)

    $tree = @(0x37,0xC9,0x7E,0x3A,0x00,0xF4,0xB3,0xBA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0xAD,0xA6,0x0E,0x44,0xB0,0xAF,0x06,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xBF,0x00,0x00,0x00,0x00,0x01,0x00,0x01,
    0x01,0x01,0x7C,0x7B,0xBB,0xBC,0xD6,0xEE,0x7F,0x3F,0x00,0x00,0x00,0x00,0x01,0x00,0x2E,0xED,0xBA,0x3C,0xF1,0xEE,0x7F,
    0xBF,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x80,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)

    $glades = @(0xAE,0x24,0x8C,0x38,0x00,0x0A,0xCB,0x35,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x12,0x0B,0xDB,0x42,0x5A,0xD8,0x80,0xC3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xBF,0x00,0x00,0x00,0x00,0x01,0x00,0x01,
    0x01,0x01,0x24,0xEA,0xBA,0xBC,0xF1,0xEE,0x7F,0x3F,0x00,0x00,0x00,0x00,0x01,0x00,0x2E,0xED,0xBA,0x3C,0xF1,0xEE,0x7F,
    0xBF,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
    0x80,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)

    $valey = @(0xDF,0xD0,0x64,0xBA,0x92,0xF5,0xA6,0xB7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x20,0xF6,0xD9,0xC3,0xC6,0xC8,0x76,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xBF,0x00,0x00,0x00,0x00,0x01,0x00,0x01,
    0x01,0x01,0x0F,0xB8,0xBA,0xBC,0xFA,0xEE,0x7F,0x3F,0x00,0x00,0x00,0x00,0x01,0x00,0x2E,0xED,0xBA,0x3C,0xF1,0xEE,0x7F,
    0xBF,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x80,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)

    $sorrow = @(0x75,0x71,0x76,0x3A,0x34,0xBF,0xB3,0x37,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0xA7,0x94,0x14,0xC4,0x01,0x8D,0xF7,0x43,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xBF,0x00,0x00,0x00,0x00,0x01,0x00,0x01,
    0x01,0x01,0x10,0x80,0xBB,0xBC,0xD5,0xEE,0x7F,0x3F,0x00,0x00,0x00,0x00,0x01,0x00,0x2E,0xED,0xBA,0x3C,0xF1,0xEE,0x7F,
    0xBF,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x80,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)

    $ruins = @(0xB7,0xE7,0x76,0x3A,0xFC,0xFF,0x69,0xB8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0xBD,0xF1,0x63,0xC4,0x3C,0xD4,0x96,0xC3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xBF,0x00,0x00,0x00,0x00,0x01,0x00,0x01,
    0x01,0x01,0x10,0x80,0xBB,0xBC,0xD5,0xEE,0x7F,0x3F,0x00,0x00,0x00,0x00,0x01,0x00,0x2E,0xED,0xBA,0x3C,0xF1,0xEE,0x7F,
    0xBF,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x80,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)

    $grotto = @(0x70,0xE2,0x7C,0x3A,0x00,0x70,0x12,0xB9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x86,0xB1,0x01,0x44,0xD4,0xB4,0x30,0xC3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xBF,0x00,0x00,0x00,0x00,0x01,0x00,0x01,
    0x01,0x01,0x10,0x80,0xBB,0xBC,0xD5,0xEE,0x7F,0x3F,0x00,0x00,0x00,0x00,0x01,0x00,0x2E,0xED,0xBA,0x3C,0xF1,0xEE,0x7F,
    0xBF,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x80,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)

    $horu = @(0x2B,0x14,0xB4,0xB8,0x00,0x40,0x20,0xB8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x59,0xFF,0x87,0x42,0x18,0x36,0x28,0x43,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xBF,0x00,0x00,0x00,0x00,0x01,0x00,0x01,
    0x01,0x01,0x7F,0x88,0xA9,0x3B,0x20,0xFF,0x7F,0x3F,0x00,0x00,0x00,0x00,0x01,0x00,0x21,0x27,0xAA,0xBB,0x1E,0xFF,0x7F,
    0xBF,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
    0x80,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)

    $basement = @(0x5B,0xEA,0x05,0xB9,0x1E,0xC4,0x16,0xB8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x69,0x0C,0x8B,0x42,0x6A,0x9A,0xBB,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
    0x01,0x01,0xDA,0xAC,0xB4,0x3E,0xF3,0x87,0x6F,0x3F,0x00,0x00,0x00,0x00,0x01,0x00,0x74,0xAC,0xB4,0xBE,0x06,0x88,0x6F,
    0xBF,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x80,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)

    $swallow = @(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x2E,0x0C,0xC5,0xA5,0x05,0x38,0xC3,0xE8,0x42,0xA3,0xBD,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
    0x01,0x01,0x67,0xAB,0x68,0x3E,0xDD,0x4D,0x79,0x3F,0x00,0x00,0x00,0x00,0x01,0x00,0x97,0xC1,0x68,0xBE,0x91,0x4C,0x79,
    0xBF,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x80,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)

    $inswallow = @(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x80,0xCF,0x10,0xC5,0xAF,0x23,0x1D,0xC4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
    0x01,0x01,0xDD,0x0C,0xA6,0x3D,0x3D,0x28,0x7F,0x3F,0x00,0x00,0x00,0x00,0x01,0x00,0x6C,0x4F,0xA5,0xBD,0x28,0x2A,0x7F,
    0xBF,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
    0x80,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)

    # Prompt for location to warp to
    " "
    "Warp to location:"
    "0 - Don't Warp (Stay where you are)"
    "1 - Hollow Grove"
    "2 - Hollow Grove (Mount Horu)"
    "3 - Thornfelt Swamp"
    "4 - Ginso Tree"
    "5 - Sunken Glades"
    "6 - Valey Of The Wind"
    "7 - Sorrow Pass"
    "8 - Forlorn Ruins"
    "9 - Moon Grotto"
    "10 - Mount Horu (Entrance)"
    "11 - Mount Horu (Basement - Skip broken door)"
    "12 - Swallows Nest (Prologue - Hilltop)"
    "13 - Swallows Nest (Prologue - Naru's House)"
    $locationNumberRaw = Read-Host 'Where would you like to be warped to? (A number from 0 to 13) '

    # Prepare correct location data to be inserted
    switch($locationNumberRaw) {
    1 { $newLocationData = $grove; break }
    2 { $newLocationData = $fire; break }
    3 { $newLocationData = $swamp; break }
    4 { $newLocationData = $tree; break }
    5 { $newLocationData = $glades; break }
    6 { $newLocationData = $valey; break }
    7 { $newLocationData = $sorrow; break }
    8 { $newLocationData = $ruins; break }
    9 { $newLocationData = $grotto; break }
    10 { $newLocationData = $horu; break }
    11 {
    $newLocationData = $basement;

    # GUID for mount horu basement door object
    $doorGUID = @(0xA6,0x2E,0xD4,0xB3,0x41,0xDE,0x25,0x46,0x88,0xDD,0x5F,0xA4,0xF5,0x41,0x0D,0x9E)

    " "
    "Searching for door flag..."

    # Loop through file to find door object
    for ($i = 0; $i -lt $bytes.length - $doorGUID.length; $i++) {
    # Check first byte to speed up search
    if ($bytes[$i] -ne $doorGUID[0]) {
    continue;
    }

    # Compare current bytes with the debug object GUID
    $chunk = $bytes[$i..($i+0x0F)]
    $diff = @(Compare-Object -ReferenceObject $doorGUID -DifferenceObject $chunk)

    #Check for a match
    if ($diff.count -eq 0) {
    "Door found"
    $i = $i + 0x14
    " "
    "Would you like to open the door at the bottom of mount horu?"
    # Prompt for debug selection
    $doorFlagRaw = Read-Host 'To open enter 1, otherwise enter 0 '

    switch($doorFlagRaw) {
    0 { $bytes[$i] = 0x01; break }
    1 {
    $bytes[$i] = 0x00
    "Open sesame!"
    break
    }
    default { $bytes[$i] = 0x01; break }
    }
    break
    }
    }
    break
    }
    12 { $newLocationData = $swallow; break }
    13 { $newLocationData = $inswallow; break }
    default { $newLocationData = 0; break }
    }
    " "

    # Check if we need to warp
    if ($newLocationData -ne 0) {
    "Searching for location data..."

    # Loop through file to find location
    for ($i = 0; $i -lt $bytes.length - $locationGUID.length; $i++) {
    # Check first byte to speed up search
    if ($bytes[$i] -ne $locationGUID[0]) {
    continue;
    }

    # Compare current bytes with the location object GUID
    $chunk = $bytes[$i..($i+0x0F)]
    $diff = @(Compare-Object -ReferenceObject $locationGUID -DifferenceObject $chunk)

    #Check for a match
    if ($diff.count -eq 0) {
    "Location data found"
    $i = $i + 0x10
    # Work out length of location object data
    $objLength = [bitconverter]::ToInt32($bytes[$i..($i+3)],0)
    $i = $i + 0x4

    "Updating location"
    # Replace location data with new location data
    $bytes = $bytes[0..($i - 1)] + $newLocationData + $bytes[($i+$newLocationData.length)..($bytes.length - 1)]
    "Location updated"
    break
    }
    }
    } else {
    "Skipping Warp"
    }

    # GUID for debug flag object
    $debugGUID = @(0xDC,0xD2,0xE1,0x24,0x23,0xE0,0x6E,0x4F,0xBF,0xD0,0x54,0xD1,0x22,0x62,0x66,0x6E)

    " "
    "Searching for debug flag..."

    # Loop through file to find debug object
    for ($i = 0; $i -lt $bytes.length - $debugGUID.length; $i++) {
    # Check first byte to speed up search
    if ($bytes[$i] -ne $debugGUID[0]) {
    continue;
    }

    # Compare current bytes with the debug object GUID
    $chunk = $bytes[$i..($i+0x0F)]
    $diff = @(Compare-Object -ReferenceObject $debugGUID -DifferenceObject $chunk)

    #Check for a match
    if ($diff.count -eq 0) {
    "Debug data found"
    $i = $i + 0x14
    if ($bytes[$i] -eq 0) {
    "Debug is off"
    } else {
    "Debug is on"
    }
    " "
    "Warning: Turning debug mode on disables steam achivements!"
    "0 - Off"
    "1 - On"
    # Prompt for debug selection
    $debugFlagRaw = Read-Host 'Toggle Debug Mode (Enter 0 or 1) '

    switch($debugFlagRaw) {
    0 { $bytes[$i] = 0x00; break }
    1 { $bytes[$i] = 0x01; break }
    default { $bytes[$i] = 0x00; break }
    }

    if ($bytes[$i] -eq 0) {
    "Debug is now off"
    } else {
    "Debug is now on"
    }
    break
    }
    }

    # Fix crouch saves
    $crouchGUID = @(0x41,0x5E,0x87,0xF4,0xC9,0x4E,0x3E,0x40,0xA8,0x95,0xD3,0x1B,0xE5,0xE2,0xB7,0xFC)

    " "
    "Searching for broken position data..."

    # Loop through file to find the crouch object
    for ($i = 0; $i -lt $bytes.length - $crouchGUID.length; $i++) {
    # Check first byte to speed up search
    if ($bytes[$i] -ne $crouchGUID[0]) {
    continue;
    }

    # Compare current bytes with the debug object GUID
    $chunk = $bytes[$i..($i+0x0F)]
    $diff = @(Compare-Object -ReferenceObject $crouchGUID -DifferenceObject $chunk)

    #Check for a match
    if ($diff.count -ne 0) {
    continue
    }
    # Move past GUID and length bytes
    $i = $i + 0x14
    "Position data found"
    " "
    "Do you want to try and fix broken position data? (Cant jump out of water / move objects)"
    "0 - No"
    "1 - Yes"
    # Prompt for debug selection
    $fixFlagRaw = Read-Host 'Attempt to fix position (Enter 0 or 1) '

    if ($fixFlagRaw -eq 1) {
    "Replacing broken position data"
    # Replace position data with known good position data
    $newPos = @(0x33,0x33,0x93,0x3F,0x00,0x00,0x00,0x00,0xCD,0xCC,0x4C,0x3D,0x00,0x00,0x00,0x00,0x7B,0x14,0xAE,0x3E)
    $bytes = $bytes[0..($i -1)] + $newPos + $bytes[($i+$newPos.length)..($bytes.length -1)]
    "Broken position data replaced"
    }
    break
    }


    # Work out the offset of the completed toggle
    $nameLength = $bytes[0x0C]
    $completeOffset = 0x0C + $nameLength + 0x25

    # Set completed toggle to 0
    $bytes[$completeOffset] = 0x00
    " "
    "Removing completed flag"
    " "

    # Save updated save file
    "Resaving save file: " + $saveLocation + "saveFile" + $saveNumber + ".sav"
    [System.IO.File]::WriteAllBytes($saveLocation + "saveFile" + $saveNumber + ".sav", $bytes)
    "Save success!"
    " "
    "Press space to close..."
    $ending = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")