This commit is contained in:
tumGER 2018-07-31 21:51:56 +02:00 committed by Nichole Mattera
parent 4506dc3e54
commit c9ae33f74a
46 changed files with 14018 additions and 73 deletions

View file

@ -1,5 +1,5 @@
{
"saveFilePaths" : [ "/" ],
"saveFilePaths" : [ "" ],
"files" : "File\\d+\\.bin",
"filetype": "bin",
"items": [

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,5 @@
{
"saveFilePaths" : [ "/" ],
"saveFilePaths" : [ "" ],
"files" : "user\\d\\.dat",
"filetype": "json",
"items": [
@ -13,6 +13,611 @@
"minValue" : 0,
"maxValue" : 99999
}
},
{
"name" : "Dream orb count",
"category" : "Collectibles",
"intArgs" : [ 0 ],
"strArgs" : [ "playerData", "dreamOrbs" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99999
}
},
{
"name" : "Simple keys count",
"category" : "Collectibles",
"intArgs" : [ 0 ],
"strArgs" : [ "playerData", "simpleKeys" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 100
}
},
{
"name" : "Pale ore count",
"category" : "Collectibles",
"intArgs" : [ 0 ],
"strArgs" : [ "playerData", "ore" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 1000
}
},
{
"name" : "Nail Damage",
"category" : "Stats",
"intArgs" : [ 0 ],
"strArgs" : [ "playerData", "nailDamage" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 100
}
},
{
"name" : "Max Health",
"category" : "Stats",
"intArgs" : [ 0 ],
"strArgs" : [ "playerData", "maxHealthBase" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 100
}
},
{
"name" : "Charm slot count",
"category" : "Stats",
"intArgs" : [ 0 ],
"strArgs" : [ "playerData", "charmSlots" ],
"widget" : {
"type" : "int",
"minValue" : 1,
"maxValue" : 99
}
},
{
"name" : "Gathering Swarm enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_1" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Wayward Compass enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_2" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Grubsong enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_3" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Stalwart Shell enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_4" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Baldur Shell enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_5" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Furry of the Fallen enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_6" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Quick Focus enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_7" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Lifeblood Heart enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_8" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Lifeblood Core enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_9" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Defender's Crest enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_10" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Flukenest enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_11" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Thorns of Agony enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_12" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Mark of Pride enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_13" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Steady body enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_14" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Heavy Bow enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_15" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Sharp Shadow enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_16" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Spore Shroom enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_17" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Longnail enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_18" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Shaman Stone enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_19" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Soul Catcher enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_20" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Soul Eater enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_21" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Glowing Womb enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_22" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Fragile Heart enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_23" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Fragile Greed enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_24" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Fragile Strength enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_25" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Nailmaster's Glory enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_26" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Joni's Blessing enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_27" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Shape of Unn enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_28" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Hiveblood enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_29" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Dream Wielder enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_30" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Dashmaster enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_31" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Quick Slash enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_32" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Spell Twister enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_33" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Deep Focus enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_34" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Grubberfly's Elegy enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_35" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Void Soul enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_36" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Sprintmaster enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_37" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Dreamshield enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_38" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Weaversong enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_39" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Grimmchild / Carefree Melody enabled",
"category" : "Charms",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "gotCharm_40" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Mothwing Cloak enabled",
"category" : "Abilities",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "hasDash" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Shadow Mothwing Cloak enabled",
"category" : "Abilities",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "hasShadowDash" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Mantis Claw enabled",
"category" : "Abilities",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "hasWalljump" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Crystal Dash enabled",
"category" : "Abilities",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "hasSuperDash" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Monarch Wings enabled",
"category" : "Abilities",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "hasDoubleJump" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Dreamnail enabled",
"category" : "Abilities",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "hasDreamNail" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Dream Gate enabled",
"category" : "Abilities",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "hasDreamGate" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Dreamnail Upgrade enabled",
"category" : "Abilities",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "dreamNailUpgraded" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
},
{
"name" : "Ismas enabled",
"category" : "Abilities",
"intArgs" : [ 1 ],
"strArgs" : [ "playerData", "hasAcidArmour" ],
"widget" : {
"type" : "bool",
"onValue" : 1,
"offValue" : 0
}
}
]
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,177 @@
{
"saveFilePaths" : [ "" ],
"files" : "File\\d+\\data00",
"filetype": "bin",
"items": [
{
"name" : "Halos",
"offsetAddress" : "0",
"address" : "EF64",
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 9999
}
}
{
"name" : "Compound Green",
"offsetAddress" : "0",
"address" : "EF7C",
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
}
{
"name" : "Compound Yellow",
"offsetAddress" : "0",
"address" : "EF78",
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
}
{
"name" : "Compound Red",
"offsetAddress" : "0",
"address" : "EF80",
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
}
{
"name" : "Green Herb",
"offsetAddress" : "0",
"address" : "EF84",
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
}
{
"name" : "Mega Green Herb",
"offsetAddress" : "0",
"address" : "EF88",
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
}
{
"name" : "Purple_Magic",
"offsetAddress" : "0",
"address" : "EF8C",
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
}
{
"name" : "Mega Purple Magic",
"offsetAddress" : "0",
"address" : "EF90",
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
}
{
"name" : "Bloody Rose",
"offsetAddress" : "0",
"address" : "EF94",
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
}
{
"name" : "Mega Bloody Rose",
"offsetAddress" : "0",
"address" : "EF98",
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
}
{
"name" : "Yellow Moon",
"offsetAddress" : "0",
"address" : "EF9C",
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
}
{
"name" : "Mega Yellow Moon",
"offsetAddress" : "0",
"address" : "EFA0",
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
}
{
"name" : "Broken Heart",
"offsetAddress" : "0",
"address" : "EFA4",
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
}
{
"name" : "Broken Pearl",
"offsetAddress" : "0",
"address" : "EFA8",
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
}
{
"name" : "Arcade Bullet",
"offsetAddress" : "0",
"address" : "EFAC",
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
}
{
"name" : "Red Hot Shot",
"offsetAddress" : "0",
"address" : "EFB0",
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
}
{
"name" : "Magic Flute",
"offsetAddress" : "0",
"address" : "EFB4",
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
}
]
}

View file

@ -0,0 +1,238 @@
{
"saveFilePaths" : [ "" ],
"files" : "save\\d\\d\\d\\d\\.sav",
"filetype": "bin",
"items": [
{
"name" : "Halos",
"category" : "Halos",
"intArgs" : [ 2, 4 ],
"strArgs" : [ "0000", "A3B0" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99999999
}
},
{
"name" : "Mandragora Root",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A3E4" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "Baked Gecko",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A3DC" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "Unicorn Horn",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A3D4" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "Yellow Moon Lollipop",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A3EC" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "Mega Bloody Rose Lollipop",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A3F4" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "Bloody Rose Lollipop",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A3FC" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "Mega Purple Magic Lollipop",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A404" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "Purple Magic Lollipop",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A40C" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "Mega Green Herb Lollipop",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A414" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "Green Herb Lollipop",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A41C" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "item 11",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A424" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "item 12",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A42C" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "Witchs Recipes",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A434" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "item 14",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A43C" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "item 15",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A444" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "item 16",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A44C" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "item 17",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A454" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "item 18",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A45C" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "item 19",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A464" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "item 20",
"category" : "Items",
"intArgs" : [ 2, 2 ],
"strArgs" : [ "0000", "A46C" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
}
]
}

View file

@ -0,0 +1,85 @@
{
"saveFilePaths" : [ "3" ],
"files" : "game_data\\.sav",
"filetype": "bin",
"items": [
{
"name" : "Rupee",
"category" : "Collectibles",
"intArgs" : [ 4, 4 ],
"strArgs" : [ "0000", "EAF8" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 999999
}
},
{
"name" : "Mons",
"category" : "Collectibles",
"intArgs" : [ 4, 4 ],
"strArgs" : [ "0000", "D7FA8" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 999999
}
},
{
"name" : "Gerudoo Relic uses remaining",
"category" : "Collectibles",
"intArgs" : [ 4, 4 ],
"strArgs" : [ "0000", "89968" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "Goron Relic uses remaining",
"category" : "Collectibles",
"intArgs" : [ 4, 4 ],
"strArgs" : [ "0000", "E7BA0" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "Rito Relic uses remaining.",
"category" : "Collectibles",
"intArgs" : [ 4, 4 ],
"strArgs" : [ "0000", "F9CC8" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 99
}
},
{
"name" : "Hearts",
"category" : "Stats",
"intArgs" : [ 4, 4 ],
"strArgs" : [ "0000", "10970" ],
"widget" : {
"type" : "list",
"listItemNames" : [ "1 Heart", "2 Hearts", "3 Hearts", "4 Hearts", "5 Hearts", "6 Hearts", "7 Hearts", "8 Hearts", "9 Hearts", "10 Hearts", "11 Hearts", "12 Hearts", "13 Hearts", "14 Hearts", "15 Hearts", "16 Hearts", "17 Hearts", "18 Hearts", "19 Hearts", "20 Hearts", "21 Hearts", "22 Hearts", "23 Hearts", "24 Hearts", "25 Hearts", "26 Hearts", "27 Hearts", "28 Hearts", "29 Hearts", "30 Hearts" ],
"listItemValues" : [ 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120 ]
}
},
{
"name" : "Stamina",
"category" : "Stats",
"intArgs" : [ 4, 4 ],
"strArgs" : [ "0000", "0503C8" ],
"widget" : {
"type" : "list",
"listItemNames" : [ "1 Wheel of Stamina", "1 & 1/5 Wheels of Stamina", "1 & 2/5 Wheels of Stamina", "1 & 3/5 Wheels of Stamina", "1 & 4/5 Wheels of Stamina", "2 Wheels of Stamina", "2 & 1/5 Wheels of Stamina", "2 & 2/5 Wheels of Stamina", "2 & 3/5 Wheels of Stamina", "2 & 4/5 Wheels of Stamina", "3 Wheels of Stamina" ],
"listItemValues" : [ 1148846080, 1150681088, 1152319488, 1153957888, 1155596288, 1157234688, 1158250496, 1159069696, 1159888896, 1160708096, 1161527296 ]
}
}
]
}

View file

@ -0,0 +1,18 @@
{
"saveFilePaths" : [ "" ],
"files" : "setsuna\\d\\d\\.dat",
"filetype": "setsuna",
"items": [
{
"name" : "Gold",
"category" : "Inventory",
"intArgs" : [ 2, 4 ],
"strArgs" : [ "0000", "00CC" ],
"widget" : {
"type" : "int",
"minValue" : 0,
"maxValue" : 999999999
}
}
]
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,18 @@
{
"saveFilePaths" : [ "" ],
"files" : "save.dat",
"filetype": "bin",
"items": [
{
"name" : "Character Level",
"category" : "Adventure Mode",
"intArgs" : [ 2, 4 ],
"strArgs" : [ "0000", "40B0" ],
"widget" : {
"type" : "int",
"minValue" : 1,
"maxValue" : 99
}
}
]
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -2,15 +2,6 @@
json = require("lib.json")
function convertToString(t)
str = ""
for i, arg in ipairs(t) do
str = str..string.char(arg)
end
return str
end
function convertToTable(s)
t = {}
@ -21,34 +12,55 @@ function convertToTable(s)
return t
end
saveFileBuffer = json.decode(convertToString(edizon.getSaveFileBuffer()))
saveFileBuffer = json.decode(edizon.getSaveFileString())
function getValueFromSaveFile()
strArgs = edizon.getStrArgs()
intArgs = edizon.getIntArgs()
item = saveFileBuffer
for i, tag in pairs(strArgs) do
if type(item) ~= "table" then break end
if string.sub(tag, 1, 1) == "\\" then
tag = tonumber(tag:sub(2)) + 1
if tag == nil then return 0 end
end
item = item[tag]
end
return item
if intArgs[1] == 0 then
return item
else
return item and 1 or 0
end
end
function setValueInSaveFile(value)
local items = saveFileBuffer
strArgs = edizon.getStrArgs()
intArgs = edizon.getIntArgs()
local ref = items
for i, arg in ipairs(strArgs) do
if i == #strArgs then
ref[arg] = value
else
ref = ref[arg]
for i, tag in ipairs(strArgs) do
if string.sub(tag, 1, 1) == "\\" then
tag = tonumber(tag:sub(2)) + 1
end
if i == #strArgs then
if intArgs[1] == 0 then
ref[tag] = value
else
ref[tag] = (value == 1)
end
else
ref = ref[tag]
end
end
end
@ -56,8 +68,6 @@ function getModifiedSaveFile()
encoded = json.encode(saveFileBuffer)
convertedTable = {}
convertedTable = convertToTable(encoded)
print(convertedTable[#convertedTable - 1])
return convertedTable
end

View file

@ -0,0 +1,168 @@
-- Copyright (c) 2017 Phil Leblanc -- see LICENSE file
------------------------------------------------------------------------
-- md5 hash - see RFC 1321 - https://www.ietf.org/rfc/rfc1321.txt
local spack, sunpack = string.pack, string.unpack
------------------------------------------------------------------------
local function FF(a, b, c, d, x, s, ac)
a = (a + ((b & c) | ((~b) & d)) + x + ac) & 0xffffffff
a = ((a << s) | (a >> (32-s))) & 0xffffffff
a = (a + b) & 0xffffffff
return a
end
local function GG(a, b, c, d, x, s, ac)
a = (a + ((b & d) | c & (~d) ) + x + ac) & 0xffffffff
a = ((a << s) | (a >> (32-s))) & 0xffffffff
a = (a + b) & 0xffffffff
return a
end
local function HH(a, b, c, d, x, s, ac)
a = (a + ((b ~ c ~ d)) + x + ac) & 0xffffffff
a = ((a << s) | (a >> (32-s))) & 0xffffffff
a = (a + b) & 0xffffffff
return a
end
local function II(a, b, c, d, x, s, ac)
a = (a + (c ~ (b | ~d)) + x + ac) & 0xffffffff
a = ((a << s) | (a >> (32-s))) & 0xffffffff
a = (a + b) & 0xffffffff
return a
end
local function transform(state, input, i, t)
-- process the 64-byte input block in string 'input' at offset 'i'
-- t is a uint32[16] array. It is passed as a parameter
-- for performance reasons
--
local a, b, c, d = state[1], state[2], state[3], state[4]
-- load array
for j = 1, 16 do
t[j] = sunpack("<I4", input, i)
i = i + 4
end
-- Round 1
a = FF (a, b, c, d, t[ 1], 7, 0xd76aa478)
d = FF (d, a, b, c, t[ 2], 12, 0xe8c7b756)
c = FF (c, d, a, b, t[ 3], 17, 0x242070db)
b = FF (b, c, d, a, t[ 4], 22, 0xc1bdceee)
a = FF (a, b, c, d, t[ 5], 7, 0xf57c0faf)
d = FF (d, a, b, c, t[ 6], 12, 0x4787c62a)
c = FF (c, d, a, b, t[ 7], 17, 0xa8304613)
b = FF (b, c, d, a, t[ 8], 22, 0xfd469501)
a = FF (a, b, c, d, t[ 9], 7, 0x698098d8)
d = FF (d, a, b, c, t[10], 12, 0x8b44f7af)
c = FF (c, d, a, b, t[11], 17, 0xffff5bb1)
b = FF (b, c, d, a, t[12], 22, 0x895cd7be)
a = FF (a, b, c, d, t[13], 7, 0x6b901122)
d = FF (d, a, b, c, t[14], 12, 0xfd987193)
c = FF (c, d, a, b, t[15], 17, 0xa679438e)
b = FF (b, c, d, a, t[16], 22, 0x49b40821)
-- Round 2
a = GG (a, b, c, d, t[ 2], 5, 0xf61e2562)
d = GG (d, a, b, c, t[ 7], 9, 0xc040b340)
c = GG (c, d, a, b, t[12], 14, 0x265e5a51)
b = GG (b, c, d, a, t[ 1], 20, 0xe9b6c7aa)
a = GG (a, b, c, d, t[ 6], 5, 0xd62f105d)
d = GG (d, a, b, c, t[11], 9, 0x2441453)
c = GG (c, d, a, b, t[16], 14, 0xd8a1e681)
b = GG (b, c, d, a, t[ 5], 20, 0xe7d3fbc8)
a = GG (a, b, c, d, t[10], 5, 0x21e1cde6)
d = GG (d, a, b, c, t[15], 9, 0xc33707d6)
c = GG (c, d, a, b, t[ 4], 14, 0xf4d50d87)
b = GG (b, c, d, a, t[ 9], 20, 0x455a14ed)
a = GG (a, b, c, d, t[14], 5, 0xa9e3e905)
d = GG (d, a, b, c, t[ 3], 9, 0xfcefa3f8)
c = GG (c, d, a, b, t[ 8], 14, 0x676f02d9)
b = GG (b, c, d, a, t[13], 20, 0x8d2a4c8a)
-- Round 3
a = HH (a, b, c, d, t[ 6], 4, 0xfffa3942)
d = HH (d, a, b, c, t[ 9], 11, 0x8771f681)
c = HH (c, d, a, b, t[12], 16, 0x6d9d6122)
b = HH (b, c, d, a, t[15], 23, 0xfde5380c)
a = HH (a, b, c, d, t[ 2], 4, 0xa4beea44)
d = HH (d, a, b, c, t[ 5], 11, 0x4bdecfa9)
c = HH (c, d, a, b, t[ 8], 16, 0xf6bb4b60)
b = HH (b, c, d, a, t[11], 23, 0xbebfbc70)
a = HH (a, b, c, d, t[14], 4, 0x289b7ec6)
d = HH (d, a, b, c, t[ 1], 11, 0xeaa127fa)
c = HH (c, d, a, b, t[ 4], 16, 0xd4ef3085)
b = HH (b, c, d, a, t[ 7], 23, 0x4881d05)
a = HH (a, b, c, d, t[10], 4, 0xd9d4d039)
d = HH (d, a, b, c, t[13], 11, 0xe6db99e5)
c = HH (c, d, a, b, t[16], 16, 0x1fa27cf8)
b = HH (b, c, d, a, t[ 3], 23, 0xc4ac5665)
-- Round 4
a = II (a, b, c, d, t[ 1], 6, 0xf4292244)
d = II (d, a, b, c, t[ 8], 10, 0x432aff97)
c = II (c, d, a, b, t[15], 15, 0xab9423a7)
b = II (b, c, d, a, t[ 6], 21, 0xfc93a039)
a = II (a, b, c, d, t[13], 6, 0x655b59c3)
d = II (d, a, b, c, t[ 4], 10, 0x8f0ccc92)
c = II (c, d, a, b, t[11], 15, 0xffeff47d)
b = II (b, c, d, a, t[ 2], 21, 0x85845dd1)
a = II (a, b, c, d, t[ 9], 6, 0x6fa87e4f)
d = II (d, a, b, c, t[16], 10, 0xfe2ce6e0)
c = II (c, d, a, b, t[ 7], 15, 0xa3014314)
b = II (b, c, d, a, t[14], 21, 0x4e0811a1)
a = II (a, b, c, d, t[ 5], 6, 0xf7537e82)
d = II (d, a, b, c, t[12], 10, 0xbd3af235)
c = II (c, d, a, b, t[ 3], 15, 0x2ad7d2bb)
b = II (b, c, d, a, t[10], 21, 0xeb86d391)
state[1] = (state[1] + a) & 0xffffffff
state[2] = (state[2] + b) & 0xffffffff
state[3] = (state[3] + c) & 0xffffffff
state[4] = (state[4] + d) & 0xffffffff
end --transform()
local function md5(input)
-- initialize state
local state = { 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476 }
local inputlen = #input
local inputbits = inputlen * 8 -- input length in bits
local r = inputlen -- number of unprocessed bytes
local i = 1 -- index in input string
local ibt = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} -- input block uint32[16]
-- process as many 64-byte blocks as possible
while r >= 64 do
-- process block
transform(state, input, i, ibt)
i = i + 64 -- update input index
r = r - 64 -- update number of unprocessed bytes
end
-- finalize. must append to input a mandatory 0x80 byte, some
-- padding, and the input bit-length ('inputbits')
local lastblock -- the rest of input .. some padding .. inputbits
local padlen -- padding length in bytes
if r < 56 then padlen = 55 - r else padlen = 119 - r end
lastblock = input:sub(i) -- remaining input
.. '\x80' .. ('\0'):rep(padlen) --padding
.. spack("<I8", inputbits) -- length in bits
assert(#lastblock == 64 or #lastblock == 128)
transform(state, lastblock, 1, ibt)
if #lastblock == 128 then
transform(state, lastblock, 65, ibt)
end
-- return the digest
local digest = spack("<I4I4I4I4", state[1], state[2], state[3], state[4])
return digest
end --md5()
--~ bin = require "plc.bin"
--~ print(bin.stohex(md5'abc'))
--~ print(bin.stohex(md5""))
return { -- md5 module
hash = md5,
}

View file

@ -0,0 +1,107 @@
-- octp --
saveFileBuffer = edizon.getSaveFileBuffer()
cachedOffset = {}
function getOffsetKey()
local strArgs = edizon.getStrArgs()
local intArgs = edizon.getIntArgs()
local offsetKey = strArgs[1]
if strArgs[3] then
offsetKey = strArgs[3].."$|$|"..(strArgs[1] or 0).."$|$|"..(intArgs[3] or 1)
end
return offsetKey
end
function getOffset()
local strArgs = edizon.getStrArgs()
local intArgs = edizon.getIntArgs()
local offsetKey = getOffsetKey()
local indirectAddress = tonumber(strArgs[1], 16)
local searchString = strArgs[3]
if cachedOffset[offsetKey] ~= nil then
return cachedOffset[offsetKey]
end
local addressSize = intArgs[1]
local offset = 0
if searchString ~= nil and searchString ~= '' then
local resultNum = intArgs[3] or 1
local start = 1
if cachedOffset[searchString.."$|$|"..(resultNum-1)] ~= nil then
start = cachedOffset[searchString.."$|$|"..(resultNum-1)]+2
resultNum = 1
else
start = indirectAddress+1
end
searchTable = { searchString:byte(1, -1) }
searchSize = searchString:len()
local found = 0
for i = start, #saveFileBuffer do
if i - 1 + searchSize > #saveFileBuffer then
break
end
for j = 1, searchSize do
c = saveFileBuffer[i + j -1]
if c ~= searchTable[j] then
break
end
if j == searchSize then
found = found + 1
end
end
if found == resultNum then
offset = i - 1
break
end
end
elseif indirectAddress ~= 0 then
for i = 0, addressSize - 1 do
offset = offset | (saveFileBuffer[indirectAddress + i + 1] << i * 8)
end
end
cachedOffset[offsetKey] = offset
return offset
end
function getValueFromSaveFile()
local strArgs = edizon.getStrArgs()
local intArgs = edizon.getIntArgs()
local address = tonumber(strArgs[2], 16)
local valueSize = intArgs[2]
local offset = getOffset()
local value = 0
for i = 0, valueSize - 1 do
value = value | (saveFileBuffer[offset + address + i + 1] << i * 8)
end
return value
end
function setValueInSaveFile(value)
local strArgs = edizon.getStrArgs()
local intArgs = edizon.getIntArgs()
local address = tonumber(strArgs[2], 16)
local valueSize = intArgs[2]
local offset = getOffset()
for i = 0, valueSize - 1 do
saveFileBuffer[offset + address + i + 1] = (value & (0xFF << i * 8)) >> (i * 8)
end
end
function getModifiedSaveFile()
return saveFileBuffer
end

View file

@ -0,0 +1,84 @@
-- setsuna (modified bin.lua) --
md5 = require("lib.md5")
saveFileBuffer = edizon.getSaveFileBuffer()
function getValueFromSaveFile()
strArgs = edizon.getStrArgs()
intArgs = edizon.getIntArgs()
indirectAddress = tonumber(strArgs[1], 16)
address = tonumber(strArgs[2], 16)
addressSize = intArgs[1]
valueSize = intArgs[2]
offset = 0
value = 0
if indirectAddress ~= 0 then
for i = 0, addressSize - 1 do
offset = offset | (saveFileBuffer[indirectAddress + i + 1] << i * 8)
end
end
for i = 0, valueSize - 1 do
value = value | (saveFileBuffer[offset + address + i + 1] << i * 8)
end
return value
end
function setValueInSaveFile(value)
strArgs = edizon.getStrArgs()
intArgs = edizon.getIntArgs()
indirectAddress = tonumber(strArgs[1], 16)
address = tonumber(strArgs[2], 16)
addressSize = intArgs[1]
valueSize = intArgs[2]
offset = 0
if indirectAddress ~= 0 then
for i = 0, addressSize - 1 do
offset = offset | (saveFileBuffer[indirectAddress + i + 1] << (i * 8))
end
end
for i = 0, valueSize - 1 do
saveFileBuffer[offset + address + i + 1] = (value & (0xFF << i * 8)) >> (i * 8)
end
end
function setChecksumZero()
for i = #saveFileBuffer - 15, #saveFileBuffer do
saveFileBuffer[i] = 0x00
end
end
function calcChecksum()
saveDataOffset = 193
checksumFileBuffer = {}
for i = saveDataOffset, #saveFileBuffer do
checksumFileBuffer[i - saveDataOffset + 1] = saveFileBuffer[i]
end
return md5.hash(string.char(table.unpack(checksumFileBuffer)))
end
function setNewChecksum(md5hash)
checksumOffset = #saveFileBuffer - 16
checksum = table.pack(md5hash:byte(1, 16))
for i = 1, 16 do
saveFileBuffer[checksumOffset + i] = checksum[i]
end
end
function replaceChecksum()
setChecksumZero()
md5hash = calcChecksum()
setNewChecksum(md5hash)
end
function getModifiedSaveFile()
replaceChecksum()
return saveFileBuffer
end

Binary file not shown.

Binary file not shown.

View file

@ -11,10 +11,6 @@ kip1=modules/newfirm/sm.kip
[CFW for Firmware 1.0]
kip1=modules/oldfirm/loader.kip1
kip1=modules/oldfirm/sm.kip1
[CFW + Clear Log]
kip1=modules/newfirm/loader.kip
kip1=modules/newfirm/sm.kip
kip1=modules/nx-dreport.kip
{ }
{----- LayeredFS ------}
@ -23,22 +19,11 @@ kip1=modules/newfirm/loader.kip
kip1=modules/newfirm/sm.kip
kip1=modules/newfirm/fs_mitm.kip
atmosphere=1
[Older LayeredFS]
kip1=modules/oldlayered/loader.kip
kip1=modules/oldlayered/sm.kip
kip1=modules/oldlayered/fs_mitm.kip
atmosphere=1
[LayeredFS + Clear Log]
kip1=modules/nx-dreport.kip
kip1=modules/newfirm/loader.kip
kip1=modules/newfirm/sm.kip
kip1=modules/newfirm/fs_mitm.kip
atmosphere=1
{ }
{-------- Stock -------}
[Stock]
[Stock + Clear Log]
[Clear Log]
kip1=modules/nx-dreport.kip
{ }
@ -60,29 +45,53 @@ kip1=modules/newfirm/fs_mitm.kip
atmosphere=1
{ }
{----- Atmosphere -----}
{ }
{This is just for testing!}
{Its your fault if it bricks!}
{I am not responsible for anything!}
{Neither is the Reswitched Team!}
{ }
{---- Experimental ----}
[Atmosphere]
secmon=modules/atmosphere/exosphere.bin
kip1=modules/atmosphere/loader.kip
kip1=modules/atmosphere/sm.kip
kip1=modules/atmosphere/fs_mitm.kip
kip1=modules/atmosphere/pm.kip
logopath=modules/atmosphere/atmosphere.bmp
atmosphere=1
{ }
{---- Sig Patches -----}
{ }
{Requires the sigpatchpayload.bin}
{That comes with this ZIP}
{ }
[ReiNX]
kip1=modules/reinx/loader.kip
kip1=modules/reinx/sm.kip
logopath=modules/reinx/
kip1patch=nosigchk
[CFW + Signature Patches]
kip1=modules/newfirm/loader.kip
kip1=modules/newfirm/sm.kip
kip1patch=nosigchk
[CFW for fw 1.0 + Signature Patches]
kip1=modules/oldfirm/loader.kip1
kip1=modules/oldfirm/sm.kip1
kip1patch=nosigchk
[LayeredFS + Signature Patches]
kip1=modules/newfirm/loader.kip
kip1=modules/newfirm/sm.kip
kip1=modules/newfirm/fs_mitm.kip
kip1patch=nosigchk
[Stock + Signature Patches]
kip1patch=nosigchk
[FTP + CFW + Signature Patches]
kip1=modules/sys-ftpd.kip
kip1=modules/newfirm/loader.kip
kip1=modules/newfirm/sm.kip
atmosphere=1
kip1patch=nosigchk
{ }
{ }
{ }
{----------------------}
{ }
{Running v5.2.1 of tumGER/SDFilesSwitch}
{Running v6 of tumGER/SDFilesSwitch}
{By: tomGER(@tumGER)}
{StevenMattera, WerWolv}
{ }
@ -91,7 +100,8 @@ atmosphere=1
{Reswitched Team, CTCaer}
{Thog, vgmoose, Brawl345}
{GGLinnk, jpe230, Adubbz}
{thomasnet, TheDgtl}
{thomasnet, TheDgtl, Rei}
{jakibaki, rajkosto}
{and many more}
{ }
{----------------------}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -11,6 +11,7 @@ Subject | Topic
. | [Atmopshere without Patches ("Complete Atmosphere")](https://github.com/tumGER/SDFilesSwitch/blob/master/HowToCompile.md#updating-atmosphere-complete)
**Homebrew and Module** | [General](https://github.com/tumGER/SDFilesSwitch/blob/master/HowToCompile.md#updating-homebrew-and-modules)
. | [Homebrew Loader](https://github.com/tumGER/SDFilesSwitch/blob/master/HowToCompile.md#homebrew-loader)
. | [Creport](https://github.com/tumGER/SDFilesSwitch/blob/master/HowToCompile.md#creport)
. | [Adding custom Icons (GagOrder)](https://github.com/tumGER/SDFilesSwitch/blob/master/HowToCompile.md#gag-order-icon)
**Extra** | [Bootlogos](https://github.com/tumGER/SDFilesSwitch/blob/master/HowToCompile.md#hekate-bootlogo)
@ -18,8 +19,8 @@ Subject | Topic
- Install [DevkitPro](https://github.com/devkitPro/installer) with Switch support
- Install needed packages:
- **Linux:** ```sudo dkp-pacman -S devkitA64 switch-tools switch-curl switch-bzip2 switch-curl switch-freetype switch-libjpeg-turbo switch-sdl2 switch-sdl2_gfx switch-sdl2_image switch-sdl2_ttf switch-zlib switch-libpng```
- **Windows** ```pacman -S devkitA64 switch-tools switch-curl switch-bzip2 switch-curl switch-freetype switch-libjpeg-turbo switch-sdl2 switch-sdl2_gfx switch-sdl2_image switch-sdl2_ttf switch-zlib switch-libpng```
- **Linux:** ```sudo dkp-pacman -S devkitA64 switch-tools switch-curl switch-bzip2 switch-freetype switch-libjpeg-turbo switch-sdl2 switch-sdl2_gfx switch-sdl2_image switch-sdl2_ttf switch-zlib switch-libpng```
- **Windows** ```pacman -S devkitA64 switch-tools switch-curl switch-bzip2 switch-freetype switch-libjpeg-turbo switch-sdl2 switch-sdl2_gfx switch-sdl2_image switch-sdl2_ttf switch-zlib switch-libpng```
- You may have to run this command through Msys2 if it doesn't work
- A clean clone of the compiler repo - **This repo holds all submodules mentioned in this guide!**
- For that simply ```git clone https://github.com/tumGER/SDFilesCompiler.git``` to your desired location
@ -56,11 +57,8 @@ Subject | Topic
Atmosphere needs some custom changes to it to work with current hekate and also to compile. While we don't need to compile Atmosphere completely, we will in this tutorial because it's easier and breaks much less (in my experience)
1. Go into "Atmosphere\fusee\fusee-primary\src" and find "main.c"
2. Type ```#define I_KNOW_WHAT_I_AM_DOING``` into line 14 (or similar)
- This is needed to make it actually compile - It's basically a small warning that will hopefully be removed some day
3. Go into "Atmosphere\stratosphere\loader\source" and find "ldr_main.cpp"
4. Remove
1. Go into "Atmosphere\stratosphere\loader\source" and find "ldr_main.cpp"
2. Remove
```cpp
/* Check for exosphere API compatibility. */
u64 exosphere_cfg;
@ -72,8 +70,8 @@ Atmosphere needs some custom changes to it to work with current hekate and also
located ~ at line 72
- This removes the Exosphere API Check from the Loader
5. Go into "Atmosphere\stratosphere\fs_mitm" and find "fsmitm_main.cpp"
6. Remove
3. Go into "Atmosphere\stratosphere\fs_mitm" and find "fsmitm_main.cpp"
4. Remove
```cpp
/* Check for exosphere API compatibility. */
u64 exosphere_cfg;
@ -89,19 +87,19 @@ located ~ at line 72
```
located ~ at line 67
7. Go back into the root of the Atmosphere submodule
8. Type "make"
9. Wait a bit, this will take some time
10. Go back into "Atmosphere\stratosphere\fs_mitm"
11. Type "make"
12. Wait a bit, this will take some time
13. Copy "loader.kip" from "Atmosphere\stratosphere\loader" into:
5. Go back into the root of the Atmosphere submodule
6. Type "make"
7. Wait a bit, this will take some time
8. Go back into "Atmosphere\stratosphere\fs_mitm"
9. Type "make"
10. Wait a bit, this will take some time
11. Copy "loader.kip" from "Atmosphere\stratosphere\loader" into:
- "SDFilesSwitch/Compiled/modules/newfirm/"
14. Copy "fs_mitm.kip" from "Atmosphere\stratosphere\fs_mitm" into:
12. Copy "fs_mitm.kip" from "Atmosphere\stratosphere\fs_mitm" into:
- "SDFilesSwitch/Compiled/modules/newfirm/"
15. Copy "sm.kip" from "Atmosphere\stratosphere\sm" into:
13. Copy "sm.kip" from "Atmosphere\stratosphere\sm" into:
- "SDFilesSwitch/Compiled/modules/newfirm/"
16. Copy the updated files to your SD and test them on your Switch
14. Copy the updated files to your SD and test them on your Switch
- If everything worked, congrats! You compiled Atmosphere's patched Loader, SM and LayeredFS :)
- If it didn't, you either messed something up or Atmosphere had some change to its code in the time I wrote this till now - In that case I'd guess contacting me over Twitter (@_tomGER [Or @tumGER since I check that more often]) is your best bet if I'm gone - If you're here because you just wanted to compile it yourself than contact me over tomGER
\#7462 on Discord.
@ -115,9 +113,8 @@ located ~ at line 67
**Atmosphere sometimes even uses features that aren't even in LibNX yet, in that case follow [the previous steps](https://github.com/tumGER/SDFilesSwitch/blob/master/HowToCompile.md#libnx) but use the [Atmosphere LibNX fork](https://github.com/Atmosphere-NX/libnx/tree/for-atmosphere) by typing ```git clone https://github.com/Atmosphere-NX/libnx.git -b for-atmosphere``` into your desired location**
1. Go into "Atmosphere\fusee\fusee-primary\src" and find "main.c"
2. Type ```#define I_KNOW_WHAT_I_AM_DOING``` into line 14 (or similar)
3. Type make on the root of the Atmosphere submodule
4. Copy "sm.kip" from "Atmosphere\stratosphere\sm", "fs_mitm.kip" from "Atmosphere\stratosphere\fs_mitm", "loader.kip" from "Atmosphere\stratosphere\loader" and "exosphere.bin" from "Atmosphere/exosphere" into "Compiled/modules/atmosphere"
2. Type make on the root of the Atmosphere submodule
3. Copy "sm.kip" from "Atmosphere\stratosphere\sm", "fs_mitm.kip" from "Atmosphere\stratosphere\fs_mitm", "loader.kip" from "Atmosphere\stratosphere\loader" and "exosphere.bin" from "Atmosphere/exosphere" into "Compiled/modules/atmosphere"
# Updating Homebrew and Modules
@ -154,6 +151,14 @@ sys-ftpd | Replace the .kip in compiled/modules
2. Copy hbl.nsp to "compiled/atmosphere/titles/010000000000100D/exefs/" and rename it to main (No extension, just main)
3. Copy hbl.npdm to "compiled/atmosphere/titles/010000000000100D/exefs/" and rename it to main.npdm
## **Creport**
1. Go into atmosphere/stratosphere/creport
2. Type ```make```
3. Copy creport.nso to "Compiled\atmosphere\titles\0100000000000036\exefs" and rename it to main (No extension, just main)
4. Go into "devkitPro\tools\bin" and type ```npdmtool.exe Location_Where_creport.json_is_stored main.npdm```
5. Copy the main.npdm from that folder into "Compiled\atmosphere\titles\0100000000000036\exefs"
## **Gag Order Icon:**