v9.0.3
This commit is contained in:
parent
b2e990c89e
commit
046532b166
135 changed files with 22 additions and 16799 deletions
|
@ -1,18 +1,14 @@
|
|||
{-- Atmosphere (EXO) --}
|
||||
[Atmosphere (Hekate)]
|
||||
secmon=modules/atmosphere/exosphere.bin
|
||||
kip1=modules/newfirm/loader.kip
|
||||
kip1=modules/newfirm/sm.kip
|
||||
kip1=modules/newfirm/fs_mitm.kip
|
||||
kip1=modules/newfirm/pm.kip
|
||||
kip1=modules/newfirm/*
|
||||
kip1=modules/fs_mitm.kip
|
||||
logopath=modules/atmosphere/atmosphere.bmp
|
||||
atmosphere=1
|
||||
[Atmosphere (SigPatches)]
|
||||
secmon=modules/atmosphere/exosphere.bin
|
||||
kip1=modules/newfirm/loader.kip
|
||||
kip1=modules/newfirm/sm.kip
|
||||
kip1=modules/newfirm/fs_mitm.kip
|
||||
kip1=modules/newfirm/pm.kip
|
||||
kip1=modules/newfirm/*
|
||||
kip1=modules/fs_mitm.kip
|
||||
logopath=modules/atmosphere/atmosphere.bmp
|
||||
atmosphere=1
|
||||
kip1patch=nosigchk
|
||||
|
|
Binary file not shown.
|
@ -4,25 +4,21 @@ bootwait=5
|
|||
customlogo=1
|
||||
verification=2
|
||||
|
||||
{tumGER/SDFilesSwitch v9.0.1}
|
||||
{tumGER/SDFilesSwitch v9.1}
|
||||
{ }
|
||||
{Discord: https://discord.gg/qbRAuy7}
|
||||
{ }
|
||||
|
||||
{-- Custom Firmwares --}
|
||||
[CFW]
|
||||
kip1=modules/newfirm/loader.kip
|
||||
kip1=modules/newfirm/sm.kip
|
||||
kip1=modules/newfirm/pm.kip
|
||||
kip1=modules/newfirm/*
|
||||
kip1patch=nosigchk
|
||||
{ }
|
||||
|
||||
{------ LayeredFS -----}
|
||||
[Newest LayeredFS]
|
||||
kip1=modules/newfirm/loader.kip
|
||||
kip1=modules/newfirm/sm.kip
|
||||
kip1=modules/newfirm/fs_mitm.kip
|
||||
kip1=modules/newfirm/pm.kip
|
||||
kip1=modules/newfirm/*
|
||||
kip1=modules/fs_mitm.kip
|
||||
atmosphere=1
|
||||
kip1patch=nosigchk
|
||||
{ }
|
||||
|
|
Binary file not shown.
|
@ -1,9 +0,0 @@
|
|||
{---- Old LayeredFS ---}
|
||||
[Older LayeredFS]
|
||||
kip1=modules/newfirm/loader.kip
|
||||
kip1=modules/newfirm/sm.kip
|
||||
kip1=modules/oldlayered/fs_mitm.kip
|
||||
kip1=modules/newfirm/pm.kip
|
||||
atmosphere=1
|
||||
kip1patch=nosigchk
|
||||
{ }
|
Binary file not shown.
BIN
Modules/reinx/ReiNX/sysmodules.dis/fs_mitm.kip
Normal file
BIN
Modules/reinx/ReiNX/sysmodules.dis/fs_mitm.kip
Normal file
Binary file not shown.
BIN
Modules/reinx/ReiNX/sysmodules.dis/pm.kip
Normal file
BIN
Modules/reinx/ReiNX/sysmodules.dis/pm.kip
Normal file
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.
|
@ -1,15 +1,11 @@
|
|||
{--- SwitchPresence ---}
|
||||
[CFW + SwitchPresence]
|
||||
kip1=modules/newfirm/loader.kip
|
||||
kip1=modules/newfirm/sm.kip
|
||||
kip1=modules/newfirm/pm.kip
|
||||
kip1=modules/newfirm/*
|
||||
kip1=modules/switchpresence/switch-rich-presence.kip
|
||||
kip1patch=nosigchk
|
||||
[Newest LayeredFS + SwitchPresence]
|
||||
kip1=modules/newfirm/loader.kip
|
||||
kip1=modules/newfirm/sm.kip
|
||||
kip1=modules/newfirm/fs_mitm.kip
|
||||
kip1=modules/newfirm/pm.kip
|
||||
kip1=modules/newfirm/*
|
||||
kip1=modules/fs_mitm.kip
|
||||
kip1=modules/switchpresence/switch-rich-presence.kip
|
||||
atmosphere=1
|
||||
kip1patch=nosigchk
|
||||
|
|
|
@ -2,16 +2,12 @@
|
|||
{Port: 5000}
|
||||
{Dont run SDFilesUpdater with this!}
|
||||
[FTP + CFW]
|
||||
kip1=modules/newfirm/loader.kip
|
||||
kip1=modules/newfirm/sm.kip
|
||||
kip1=modules/newfirm/pm.kip
|
||||
kip1=modules/newfirm/*
|
||||
kip1=modules/sysftpd/sys-ftpd.kip
|
||||
kip1patch=nosigchk
|
||||
[FTP + LayeredFS]
|
||||
kip1=modules/newfirm/loader.kip
|
||||
kip1=modules/newfirm/sm.kip
|
||||
kip1=modules/newfirm/fs_mitm.kip
|
||||
kip1=modules/newfirm/pm.kip
|
||||
kip1=modules/fs_mitm.kip
|
||||
kip1=modules/newfirm/*
|
||||
kip1=modules/sysftpd/sys-ftpd.kip
|
||||
atmosphere=1
|
||||
kip1patch=nosigchk
|
||||
|
|
|
@ -1,24 +1,20 @@
|
|||
{---- sys-netcheat ----}
|
||||
[CFW + sys-netcheat]
|
||||
kip1=modules/newfirm/loader.kip
|
||||
kip1=modules/newfirm/sm.kip
|
||||
kip1=modules/newfirm/pm.kip
|
||||
kip1=modules/sys-netcheat.kip
|
||||
kip1=modules/newfirm/*
|
||||
kip1=modules/sysnetcheat/sys-netcheat.kip
|
||||
kip1patch=nosigchk
|
||||
debugmode=1
|
||||
fullsvcperm=1
|
||||
[LayeredFS + sys-netcheat]
|
||||
kip1=modules/newfirm/loader.kip
|
||||
kip1=modules/newfirm/sm.kip
|
||||
kip1=modules/newfirm/fs_mitm.kip
|
||||
kip1=modules/newfirm/pm.kip
|
||||
kip1=modules/sys-netcheat.kip
|
||||
kip1=modules/newfirm/*
|
||||
kip1=modules/fs_mitm.kip
|
||||
kip1=modules/sysnetcheat/sys-netcheat.kip
|
||||
atmosphere=1
|
||||
kip1patch=nosigchk
|
||||
debugmode=1
|
||||
fullsvcperm=1
|
||||
[Stock + sys-netcheat]
|
||||
kip1=modules/sys-netcheat.kip
|
||||
kip1=modules/sysnetcheat/sys-netcheat.kip
|
||||
debugmode=1
|
||||
fullsvcperm=1
|
||||
{ }
|
Binary file not shown.
|
@ -1,8 +1,6 @@
|
|||
{------ xor.play ------}
|
||||
[CFW + xor.play]
|
||||
kip1=modules/newfirm/loader.kip
|
||||
kip1=modules/newfirm/sm.kip
|
||||
kip1=modules/newfirm/pm.kip
|
||||
kip1=modules/newfirm/*
|
||||
kip1=modules/xorplay/xor.play.kip
|
||||
kip1patch=nosigchk
|
||||
[Stock + xor.play]
|
||||
|
|
File diff suppressed because it is too large
Load diff
BIN
SDFiles/ReiNX/sysmodules.dis/fs_mitm.kip
Normal file
BIN
SDFiles/ReiNX/sysmodules.dis/fs_mitm.kip
Normal file
Binary file not shown.
BIN
SDFiles/ReiNX/sysmodules.dis/pm.kip
Normal file
BIN
SDFiles/ReiNX/sysmodules.dis/pm.kip
Normal file
Binary file not shown.
BIN
SDFiles/ReiNX/sysmodules/loader.kip
Normal file
BIN
SDFiles/ReiNX/sysmodules/loader.kip
Normal file
Binary file not shown.
BIN
SDFiles/ReiNX/sysmodules/sm.kip
Normal file
BIN
SDFiles/ReiNX/sysmodules/sm.kip
Normal file
Binary file not shown.
|
@ -4,7 +4,7 @@ bootwait=5
|
|||
customlogo=1
|
||||
verification=2
|
||||
|
||||
{tumGER/SDFilesSwitch v9.0.1}
|
||||
{tumGER/SDFilesSwitch v9.0.3}
|
||||
{ }
|
||||
{Discord: https://discord.gg/qbRAuy7}
|
||||
{ }
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,21 +0,0 @@
|
|||
{
|
||||
"beta" : false,
|
||||
"all" : {
|
||||
"saveFilePaths" : [ "" ],
|
||||
"files" : "File\\d+\\.bin",
|
||||
"filetype": "bin",
|
||||
"items": [
|
||||
{
|
||||
"name" : "Coin Count",
|
||||
"category" : "Collectibles",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "001C", "0050" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 0,
|
||||
"maxValue" : 9999
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
{
|
||||
"beta" : true,
|
||||
"all" : {
|
||||
"saveFilePaths" : [ "Managers" ],
|
||||
"files" : "PlayerManager.bs",
|
||||
"filetype": "bin",
|
||||
"items":[
|
||||
{
|
||||
"name":"Levels Unlocked (All or nothing)",
|
||||
"category" : "Unlockables",
|
||||
"intArgs" : [ 2, 4 ],
|
||||
"strArgs" : [
|
||||
"0000", "0086"
|
||||
],
|
||||
"widget" : {
|
||||
"type" : "bool",
|
||||
"onValue" : 400000,
|
||||
"offValue" : 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
{
|
||||
"beta" : false,
|
||||
"all" : {
|
||||
"saveFilePaths" : [ "" ],
|
||||
"files" : "data.bin",
|
||||
"filetype": "puyopuyo",
|
||||
"items": [
|
||||
{
|
||||
"name" : "Credits",
|
||||
"category" : "Game",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "06C4" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 0,
|
||||
"maxValue" : 9999
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"useInstead" : "0100E66006406000.json"
|
||||
}
|
|
@ -1,626 +0,0 @@
|
|||
{
|
||||
"beta" : false,
|
||||
"all" : {
|
||||
"saveFilePaths" : [ "" ],
|
||||
"files" : "user\\d\\.dat",
|
||||
"filetype": "json",
|
||||
"items": [
|
||||
{
|
||||
"name" : "Geo count",
|
||||
"category" : "Collectibles",
|
||||
"intArgs" : [ 0 ],
|
||||
"strArgs" : [ "playerData", "geo" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"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
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
{
|
||||
"beta" : false,
|
||||
"all" : {
|
||||
"saveFilePaths" : [ "" ],
|
||||
"files" : "data.bin",
|
||||
"filetype": "puyopuyo",
|
||||
"items": [
|
||||
{
|
||||
"name" : "Credits",
|
||||
"category" : "Game",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "06C4" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 0,
|
||||
"maxValue" : 9999
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,182 +0,0 @@
|
|||
{
|
||||
"beta" : false,
|
||||
"all" : {
|
||||
"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
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
{
|
||||
"beta" : true,
|
||||
"all" : {
|
||||
"saveFilePaths" : [ "" ],
|
||||
"files" : "File[ABC]",
|
||||
"filetype": "bin",
|
||||
"items":[
|
||||
{
|
||||
"name":"Stat Points",
|
||||
"category" : "Stats",
|
||||
"intArgs" : [ 2, 4 ],
|
||||
"strArgs" : [
|
||||
"0000", "0906"
|
||||
],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 10,
|
||||
"maxValue" : 255
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,120 +0,0 @@
|
|||
{
|
||||
"beta" : true,
|
||||
"all": {
|
||||
"saveFilePaths" : [ "" ],
|
||||
"files" : "SAVEDATA\\d\\d",
|
||||
"filetype": "lostsphear",
|
||||
"items": [
|
||||
{
|
||||
"name" : "Gold",
|
||||
"category" : "01. Inventory",
|
||||
"intArgs" : [ 2, 4 ],
|
||||
"strArgs" : [ "0000", "0524" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 0,
|
||||
"maxValue" : 999999999
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Level",
|
||||
"category" : "02. Kanata",
|
||||
"intArgs" : [ 2, 1 ],
|
||||
"strArgs" : [ "0000", "1C3E6" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 99
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Level",
|
||||
"category" : "03. Lumina",
|
||||
"intArgs" : [ 2, 1 ],
|
||||
"strArgs" : [ "0000", "1C518" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 99
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Level",
|
||||
"category" : "04. Locke",
|
||||
"intArgs" : [ 2, 1 ],
|
||||
"strArgs" : [ "0000", "1C8AE" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 99
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Level",
|
||||
"category" : "05. Van",
|
||||
"intArgs" : [ 2, 1 ],
|
||||
"strArgs" : [ "0000", "1C47F" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 99
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Level",
|
||||
"category" : "06. Obaro",
|
||||
"intArgs" : [ 2, 1 ],
|
||||
"strArgs" : [ "0000", "1C5B1" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 99
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Level",
|
||||
"category" : "07. Galdra",
|
||||
"intArgs" : [ 2, 1 ],
|
||||
"strArgs" : [ "0000", "1C815" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 99
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Level",
|
||||
"category" : "08. Sherra",
|
||||
"intArgs" : [ 2, 1 ],
|
||||
"strArgs" : [ "0000", "1C64A" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 99
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Level",
|
||||
"category" : "09. Dianto",
|
||||
"intArgs" : [ 2, 1 ],
|
||||
"strArgs" : [ "0000", "1C6E3" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 99
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Level",
|
||||
"category" : "10. Gears",
|
||||
"intArgs" : [ 2, 1 ],
|
||||
"strArgs" : [ "0000", "1C77C" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 99
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,241 +0,0 @@
|
|||
{
|
||||
"beta" : false,
|
||||
"all" : {
|
||||
"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
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,130 +0,0 @@
|
|||
{
|
||||
"beta" : false,
|
||||
"all" : {
|
||||
"saveFilePaths": [""],
|
||||
"files": "systemData",
|
||||
"filetype": "bin",
|
||||
"items": [{
|
||||
"name": "Coins",
|
||||
"category": "1. Main",
|
||||
"intArgs": [2, 4],
|
||||
"strArgs": ["0000", "0458"],
|
||||
"widget": {
|
||||
"type": "int",
|
||||
"minValue": 0,
|
||||
"maxValue": 999999999
|
||||
}
|
||||
}, {
|
||||
"name": "Unlock Levels",
|
||||
"category": "1. Main",
|
||||
"intArgs": [2, 3],
|
||||
"strArgs": ["0000", "0450"],
|
||||
"widget": {
|
||||
"type": "list",
|
||||
"listItemNames": ["Reset", "Unlock All"],
|
||||
"listItemValues": [0, 16777215]
|
||||
}
|
||||
}, {
|
||||
"name": "Accessories 01-02",
|
||||
"category": "2. Accessories",
|
||||
"intArgs": [2, 1],
|
||||
"strArgs": ["0000", "0440"],
|
||||
"widget": {
|
||||
"type": "list",
|
||||
"listItemNames": ["None", "1 Full", "2 Full", "All Full"],
|
||||
"listItemValues": [0, 128, 8, 136]
|
||||
}
|
||||
}, {
|
||||
"name": "Accessories 03-04",
|
||||
"category": "2. Accessories",
|
||||
"intArgs": [2, 1],
|
||||
"strArgs": ["0000", "0441"],
|
||||
"widget": {
|
||||
"type": "list",
|
||||
"listItemNames": ["None", "3 Full", "4 Full", "All Full"],
|
||||
"listItemValues": [0, 128, 8, 136]
|
||||
}
|
||||
}, {
|
||||
"name": "Accessories 05-06",
|
||||
"category": "2. Accessories",
|
||||
"intArgs": [2, 1],
|
||||
"strArgs": ["0000", "0442"],
|
||||
"widget": {
|
||||
"type": "list",
|
||||
"listItemNames": ["None", "5 Full", "6 Full", "All Full"],
|
||||
"listItemValues": [0, 128, 8, 136]
|
||||
}
|
||||
}, {
|
||||
"name": "Accessories 07-08",
|
||||
"category": "2. Accessories",
|
||||
"intArgs": [2, 1],
|
||||
"strArgs": ["0000", "0443"],
|
||||
"widget": {
|
||||
"type": "list",
|
||||
"listItemNames": ["None", "7 Full", "8 Full", "All Full"],
|
||||
"listItemValues": [0, 128, 8, 136]
|
||||
}
|
||||
}, {
|
||||
"name": "Accessories 09-10",
|
||||
"category": "2. Accessories",
|
||||
"intArgs": [2, 1],
|
||||
"strArgs": ["0000", "0444"],
|
||||
"widget": {
|
||||
"type": "list",
|
||||
"listItemNames": ["None", "9 Full", "10 Full", "All Full"],
|
||||
"listItemValues": [0, 128, 8, 136]
|
||||
}
|
||||
}, {
|
||||
"name": "Accessories 11-12",
|
||||
"category": "2. Accessories",
|
||||
"intArgs": [2, 1],
|
||||
"strArgs": ["0000", "0445"],
|
||||
"widget": {
|
||||
"type": "list",
|
||||
"listItemNames": ["None", "11 Full", "12 Full", "All Full"],
|
||||
"listItemValues": [0, 128, 8, 136]
|
||||
}
|
||||
}, {
|
||||
"name": "Accessories 13-14",
|
||||
"category": "2. Accessories",
|
||||
"intArgs": [2, 1],
|
||||
"strArgs": ["0000", "0446"],
|
||||
"widget": {
|
||||
"type": "list",
|
||||
"listItemNames": ["None", "13 Full", "14 Full", "All Full"],
|
||||
"listItemValues": [0, 128, 8, 136]
|
||||
}
|
||||
}, {
|
||||
"name": "Accessories 15-16",
|
||||
"category": "2. Accessories",
|
||||
"intArgs": [2, 1],
|
||||
"strArgs": ["0000", "0447"],
|
||||
"widget": {
|
||||
"type": "list",
|
||||
"listItemNames": ["None", "15 Full", "16 Full", "All Full"],
|
||||
"listItemValues": [0, 128, 8, 136]
|
||||
}
|
||||
}, {
|
||||
"name": "Accessories 17-18",
|
||||
"category": "2. Accessories",
|
||||
"intArgs": [2, 1],
|
||||
"strArgs": ["0000", "0448"],
|
||||
"widget": {
|
||||
"type": "list",
|
||||
"listItemNames": ["None", "17 Full", "18 Full", "All Full"],
|
||||
"listItemValues": [0, 128, 8, 136]
|
||||
}
|
||||
}, {
|
||||
"name": "Accessories 19-20",
|
||||
"category": "2. Accessories",
|
||||
"intArgs": [2, 1],
|
||||
"strArgs": ["0000", "0449"],
|
||||
"widget": {
|
||||
"type": "list",
|
||||
"listItemNames": ["None", "19 Full", "20 Full", "All Full"],
|
||||
"listItemValues": [0, 128, 8, 136]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,88 +0,0 @@
|
|||
{
|
||||
"beta" : false,
|
||||
"1.5.0" : {
|
||||
"saveFilePaths" : [ "\\d" ],
|
||||
"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 ]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,602 +0,0 @@
|
|||
{
|
||||
"beta" : true,
|
||||
"all": {
|
||||
"saveFilePaths" : [ "" ],
|
||||
"files" : "setsuna\\d\\d\\.dat",
|
||||
"filetype": "setsuna",
|
||||
"items": [
|
||||
{
|
||||
"name" : "Gold",
|
||||
"category" : "1. Inventory",
|
||||
"intArgs" : [ 2, 4 ],
|
||||
"strArgs" : [ "0000", "00CC" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 0,
|
||||
"maxValue" : 999999999
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Level",
|
||||
"category" : "2. Endir",
|
||||
"intArgs" : [ 2, 1 ],
|
||||
"strArgs" : [ "0000", "72FE6" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 99
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Current HP",
|
||||
"category" : "2. Endir",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "72FEE" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Max HP",
|
||||
"category" : "2. Endir",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "72FE2" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Current MP",
|
||||
"category" : "2. Endir",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "72FF2" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Max MP",
|
||||
"category" : "2. Endir",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "72FE8" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Strength",
|
||||
"category" : "2. Endir",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "72FEA" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 9999,
|
||||
"stepSize" : 100
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Intelligence",
|
||||
"category" : "2. Endir",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "72FEC" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 9999,
|
||||
"stepSize" : 100
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Level",
|
||||
"category" : "3. Setsuna",
|
||||
"intArgs" : [ 2, 1 ],
|
||||
"strArgs" : [ "0000", "7303C" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 99
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Current HP",
|
||||
"category" : "3. Setsuna",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "73044" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Max HP",
|
||||
"category" : "3. Setsuna",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "73038" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Current MP",
|
||||
"category" : "3. Setsuna",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "73048" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Max MP",
|
||||
"category" : "3. Setsuna",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "7303E" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Strength",
|
||||
"category" : "3. Setsuna",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "73040" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 9999,
|
||||
"stepSize" : 100
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Intelligence",
|
||||
"category" : "3. Setsuna",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "73042" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 9999,
|
||||
"stepSize" : 100
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Level",
|
||||
"category" : "4. Aeterna",
|
||||
"intArgs" : [ 2, 1 ],
|
||||
"strArgs" : [ "0000", "73092" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 99
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Current HP",
|
||||
"category" : "4. Aeterna",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "7309A" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Max HP",
|
||||
"category" : "4. Aeterna",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "7308E" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Current MP",
|
||||
"category" : "4. Aeterna",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "7309E" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Max MP",
|
||||
"category" : "4. Aeterna",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "73094" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Strength",
|
||||
"category" : "4. Aeterna",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "73096" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 9999,
|
||||
"stepSize" : 100
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Intelligence",
|
||||
"category" : "4. Aeterna",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "73098" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 9999,
|
||||
"stepSize" : 100
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Level",
|
||||
"category" : "5. Nidr",
|
||||
"intArgs" : [ 2, 1 ],
|
||||
"strArgs" : [ "0000", "730E8" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 99
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Current HP",
|
||||
"category" : "5. Nidr",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "730F0" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Max HP",
|
||||
"category" : "5. Nidr",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "730E4" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Current MP",
|
||||
"category" : "5. Nidr",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "730F4" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Max MP",
|
||||
"category" : "5. Nidr",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "730EA" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Strength",
|
||||
"category" : "5. Nidr",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "730EC" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 9999,
|
||||
"stepSize" : 100
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Intelligence",
|
||||
"category" : "5. Nidr",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "730EE" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 9999,
|
||||
"stepSize" : 100
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Level",
|
||||
"category" : "6. Kir",
|
||||
"intArgs" : [ 2, 1 ],
|
||||
"strArgs" : [ "0000", "7313E" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 99
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Current HP",
|
||||
"category" : "6. Kir",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "73146" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Max HP",
|
||||
"category" : "6. Kir",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "7313A" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Current MP",
|
||||
"category" : "6. Kir",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "7314A" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Max MP",
|
||||
"category" : "6. Kir",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "73140" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Strength",
|
||||
"category" : "6. Kir",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "73142" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 9999,
|
||||
"stepSize" : 100
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Intelligence",
|
||||
"category" : "6. Kir",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "73144" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 9999,
|
||||
"stepSize" : 100
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Level",
|
||||
"category" : "7. Julienne",
|
||||
"intArgs" : [ 2, 1 ],
|
||||
"strArgs" : [ "0000", "73194" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 99
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Current HP",
|
||||
"category" : "7. Julienne",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "7319C" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Max HP",
|
||||
"category" : "7. Julienne",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "73190" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Current MP",
|
||||
"category" : "7. Julienne",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "731A0" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Max MP",
|
||||
"category" : "7. Julienne",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "73196" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Strength",
|
||||
"category" : "7. Julienne",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "73198" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 9999,
|
||||
"stepSize" : 100
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Intelligence",
|
||||
"category" : "7. Julienne",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "7319A" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 9999,
|
||||
"stepSize" : 100
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Level",
|
||||
"category" : "8. Fides",
|
||||
"intArgs" : [ 2, 1 ],
|
||||
"strArgs" : [ "0000", "731EA" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 99
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Current HP",
|
||||
"category" : "8. Fides",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "731F2" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Max HP",
|
||||
"category" : "8. Fides",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "731E6" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Current MP",
|
||||
"category" : "8. Fides",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "731F6" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Max MP",
|
||||
"category" : "8. Fides",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "731EC" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 999,
|
||||
"stepSize" : 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Strength",
|
||||
"category" : "8. Fides",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "731EE" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 9999,
|
||||
"stepSize" : 100
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "Intelligence",
|
||||
"category" : "8. Fides",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "731F0" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 1,
|
||||
"maxValue" : 9999,
|
||||
"stepSize" : 100
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"useInstead" : "0100E66006406000.json"
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"useInstead" : "0100E66006406000.json"
|
||||
}
|
File diff suppressed because it is too large
Load diff
|
@ -1,21 +0,0 @@
|
|||
{
|
||||
"beta" : false,
|
||||
"all" : {
|
||||
"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
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,21 +0,0 @@
|
|||
{
|
||||
"beta" : false,
|
||||
"all" : {
|
||||
"saveFilePaths" : [ "" ],
|
||||
"files" : "data.bin",
|
||||
"filetype": "puyopuyo",
|
||||
"items": [
|
||||
{
|
||||
"name" : "Credits",
|
||||
"category" : "Game",
|
||||
"intArgs" : [ 2, 2 ],
|
||||
"strArgs" : [ "0000", "06C4" ],
|
||||
"widget" : {
|
||||
"type" : "int",
|
||||
"minValue" : 0,
|
||||
"maxValue" : 9999
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,53 +0,0 @@
|
|||
-- bin --
|
||||
|
||||
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 getModifiedSaveFile()
|
||||
return saveFileBuffer
|
||||
end
|
||||
|
|
@ -1,79 +0,0 @@
|
|||
-- json --
|
||||
|
||||
json = require("lib.json")
|
||||
|
||||
|
||||
saveFileString = edizon.getSaveFileString()
|
||||
saveFileString = saveFileString:gsub('{%s*}', '{"edizon":true}')
|
||||
saveFileBuffer = json.decode(saveFileString)
|
||||
|
||||
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
|
||||
|
||||
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, 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
|
||||
|
||||
local function convertToTable(s)
|
||||
t = {}
|
||||
|
||||
for i = 1, #s do
|
||||
t[i] = string.byte(s:sub(i, i))
|
||||
end
|
||||
|
||||
return t
|
||||
end
|
||||
|
||||
function getModifiedSaveFile()
|
||||
encoded = json.encode(saveFileBuffer)
|
||||
|
||||
encoded = encoded:gsub('{"edizon":true}', '{}')
|
||||
|
||||
convertedTable = {}
|
||||
convertedTable = convertToTable(encoded)
|
||||
|
||||
return convertedTable
|
||||
end
|
|
@ -1,82 +0,0 @@
|
|||
-- Copyright (c) 2015 Phil Leblanc -- see LICENSE file
|
||||
------------------------------------------------------------
|
||||
-- checksums: adler-32, crc-32
|
||||
|
||||
|
||||
------------------------------------------------------------
|
||||
local byte = string.byte
|
||||
|
||||
------------------------------------------------------------
|
||||
-- adler32
|
||||
|
||||
local function adler32(s)
|
||||
-- return adler32 checksum (uint32)
|
||||
-- adler32 is a checksum defined by Mark Adler for zlib
|
||||
-- (based on the Fletcher checksum used in ITU X.224)
|
||||
-- implementation based on RFC 1950 (zlib format spec), 1996
|
||||
local prime = 65521 --largest prime smaller than 2^16
|
||||
local s1, s2 = 1, 0
|
||||
-- limit s size to ensure that modulo prime can be done only at end
|
||||
-- 2^40 bytes should be enough for pure Lua with 64-bit integers...
|
||||
if #s > (1 << 40) then error("adler32: string too large") end
|
||||
for i = 1,#s do
|
||||
local b = byte(s, i)
|
||||
s1 = s1 + b
|
||||
s2 = s2 + s1
|
||||
-- no need to test or compute mod prime every turn.
|
||||
end
|
||||
s1 = s1 % prime
|
||||
s2 = s2 % prime
|
||||
return (s2 << 16) + s1
|
||||
end --adler32()
|
||||
|
||||
local function crc32_nt(s)
|
||||
-- return crc32 checksum of string s as an integer
|
||||
-- uses no lookup table
|
||||
-- inspired by crc32b at
|
||||
-- http://www.hackersdelight.org/hdcodetxt/crc.c.txt
|
||||
local b, crc, mask
|
||||
crc = 0xffffffff
|
||||
for i = 1, #s do
|
||||
b = byte(s, i)
|
||||
crc = crc ~ b
|
||||
for _ = 1, 8 do --eight times
|
||||
mask = -(crc & 1)
|
||||
crc = (crc >> 1) ~ (0xedb88320 & mask)
|
||||
end
|
||||
end--for
|
||||
return (~crc) & 0xffffffff
|
||||
end --crc32_nt()
|
||||
|
||||
local function crc32(s, lt)
|
||||
-- return crc32 checksum of string as an integer
|
||||
-- use lookup table lt if provided or create one on the fly
|
||||
-- if lt is empty, it is initialized.
|
||||
lt = lt or {}
|
||||
local b, crc, mask
|
||||
if not lt[1] then -- setup table
|
||||
for i = 1, 256 do
|
||||
crc = i - 1
|
||||
for _ = 1, 8 do --eight times
|
||||
mask = -(crc & 1)
|
||||
crc = (crc >> 1) ~ (0xedb88320 & mask)
|
||||
end
|
||||
lt[i] = crc
|
||||
end--for
|
||||
end--if
|
||||
-- compute the crc
|
||||
crc = 0xffffffff
|
||||
for i = 1, #s do
|
||||
b = byte(s, i)
|
||||
crc = (crc >> 8) ~ lt[((crc ~ b) & 0xFF) + 1]
|
||||
end
|
||||
return (~crc) & 0xffffffff
|
||||
end --crc32()
|
||||
|
||||
|
||||
return {
|
||||
-- module
|
||||
adler32 = adler32,
|
||||
crc32_nt = crc32_nt,
|
||||
crc32 = crc32,
|
||||
}
|
|
@ -1,400 +0,0 @@
|
|||
--
|
||||
-- json.lua
|
||||
--
|
||||
-- Copyright (c) 2018 rxi
|
||||
--
|
||||
-- Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
-- this software and associated documentation files (the "Software"), to deal in
|
||||
-- the Software without restriction, including without limitation the rights to
|
||||
-- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
-- of the Software, and to permit persons to whom the Software is furnished to do
|
||||
-- so, subject to the following conditions:
|
||||
--
|
||||
-- The above copyright notice and this permission notice shall be included in all
|
||||
-- copies or substantial portions of the Software.
|
||||
--
|
||||
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
-- SOFTWARE.
|
||||
--
|
||||
|
||||
local json = { _version = "0.1.1" }
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- Encode
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
local encode
|
||||
|
||||
local escape_char_map = {
|
||||
[ "\\" ] = "\\\\",
|
||||
[ "\"" ] = "\\\"",
|
||||
[ "\b" ] = "\\b",
|
||||
[ "\f" ] = "\\f",
|
||||
[ "\n" ] = "\\n",
|
||||
[ "\r" ] = "\\r",
|
||||
[ "\t" ] = "\\t",
|
||||
}
|
||||
|
||||
local escape_char_map_inv = { [ "\\/" ] = "/" }
|
||||
for k, v in pairs(escape_char_map) do
|
||||
escape_char_map_inv[v] = k
|
||||
end
|
||||
|
||||
|
||||
local function escape_char(c)
|
||||
return escape_char_map[c] or string.format("\\u%04x", c:byte())
|
||||
end
|
||||
|
||||
|
||||
local function encode_nil(val)
|
||||
return "null"
|
||||
end
|
||||
|
||||
|
||||
local function encode_table(val, stack)
|
||||
local res = {}
|
||||
stack = stack or {}
|
||||
|
||||
-- Circular reference?
|
||||
if stack[val] then error("circular reference") end
|
||||
|
||||
stack[val] = true
|
||||
|
||||
if val[1] ~= nil or next(val) == nil then
|
||||
-- Treat as array -- check keys are valid and it is not sparse
|
||||
local n = 0
|
||||
for k in pairs(val) do
|
||||
if type(k) ~= "number" then
|
||||
error("invalid table: mixed or invalid key types")
|
||||
end
|
||||
n = n + 1
|
||||
end
|
||||
if n ~= #val then
|
||||
error("invalid table: sparse array")
|
||||
end
|
||||
-- Encode
|
||||
for i, v in ipairs(val) do
|
||||
table.insert(res, encode(v, stack))
|
||||
end
|
||||
stack[val] = nil
|
||||
return "[" .. table.concat(res, ",") .. "]"
|
||||
|
||||
else
|
||||
-- Treat as an object
|
||||
for k, v in pairs(val) do
|
||||
if type(k) ~= "string" then
|
||||
error("invalid table: mixed or invalid key types")
|
||||
end
|
||||
table.insert(res, encode(k, stack) .. ":" .. encode(v, stack))
|
||||
end
|
||||
stack[val] = nil
|
||||
return "{" .. table.concat(res, ",") .. "}"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local function encode_string(val)
|
||||
return '"' .. val:gsub('[%z\1-\31\\"]', escape_char) .. '"'
|
||||
end
|
||||
|
||||
|
||||
local function encode_number(val)
|
||||
-- Check for NaN, -inf and inf
|
||||
if val ~= val or val <= -math.huge or val >= math.huge then
|
||||
error("unexpected number value '" .. tostring(val) .. "'")
|
||||
end
|
||||
return string.format("%.14g", val)
|
||||
end
|
||||
|
||||
|
||||
local type_func_map = {
|
||||
[ "nil" ] = encode_nil,
|
||||
[ "table" ] = encode_table,
|
||||
[ "string" ] = encode_string,
|
||||
[ "number" ] = encode_number,
|
||||
[ "boolean" ] = tostring,
|
||||
}
|
||||
|
||||
|
||||
encode = function(val, stack)
|
||||
local t = type(val)
|
||||
local f = type_func_map[t]
|
||||
if f then
|
||||
return f(val, stack)
|
||||
end
|
||||
error("unexpected type '" .. t .. "'")
|
||||
end
|
||||
|
||||
|
||||
function json.encode(val)
|
||||
return ( encode(val) )
|
||||
end
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- Decode
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
local parse
|
||||
|
||||
local function create_set(...)
|
||||
local res = {}
|
||||
for i = 1, select("#", ...) do
|
||||
res[ select(i, ...) ] = true
|
||||
end
|
||||
return res
|
||||
end
|
||||
|
||||
local space_chars = create_set(" ", "\t", "\r", "\n")
|
||||
local delim_chars = create_set(" ", "\t", "\r", "\n", "]", "}", ",")
|
||||
local escape_chars = create_set("\\", "/", '"', "b", "f", "n", "r", "t", "u")
|
||||
local literals = create_set("true", "false", "null")
|
||||
|
||||
local literal_map = {
|
||||
[ "true" ] = true,
|
||||
[ "false" ] = false,
|
||||
[ "null" ] = nil,
|
||||
}
|
||||
|
||||
|
||||
local function next_char(str, idx, set, negate)
|
||||
for i = idx, #str do
|
||||
if set[str:sub(i, i)] ~= negate then
|
||||
return i
|
||||
end
|
||||
end
|
||||
return #str + 1
|
||||
end
|
||||
|
||||
|
||||
local function decode_error(str, idx, msg)
|
||||
local line_count = 1
|
||||
local col_count = 1
|
||||
for i = 1, idx - 1 do
|
||||
col_count = col_count + 1
|
||||
if str:sub(i, i) == "\n" then
|
||||
line_count = line_count + 1
|
||||
col_count = 1
|
||||
end
|
||||
end
|
||||
error( string.format("%s at line %d col %d", msg, line_count, col_count) )
|
||||
end
|
||||
|
||||
|
||||
local function codepoint_to_utf8(n)
|
||||
-- http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-appendixa
|
||||
local f = math.floor
|
||||
if n <= 0x7f then
|
||||
return string.char(n)
|
||||
elseif n <= 0x7ff then
|
||||
return string.char(f(n / 64) + 192, n % 64 + 128)
|
||||
elseif n <= 0xffff then
|
||||
return string.char(f(n / 4096) + 224, f(n % 4096 / 64) + 128, n % 64 + 128)
|
||||
elseif n <= 0x10ffff then
|
||||
return string.char(f(n / 262144) + 240, f(n % 262144 / 4096) + 128,
|
||||
f(n % 4096 / 64) + 128, n % 64 + 128)
|
||||
end
|
||||
error( string.format("invalid unicode codepoint '%x'", n) )
|
||||
end
|
||||
|
||||
|
||||
local function parse_unicode_escape(s)
|
||||
local n1 = tonumber( s:sub(3, 6), 16 )
|
||||
local n2 = tonumber( s:sub(9, 12), 16 )
|
||||
-- Surrogate pair?
|
||||
if n2 then
|
||||
return codepoint_to_utf8((n1 - 0xd800) * 0x400 + (n2 - 0xdc00) + 0x10000)
|
||||
else
|
||||
return codepoint_to_utf8(n1)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local function parse_string(str, i)
|
||||
local has_unicode_escape = false
|
||||
local has_surrogate_escape = false
|
||||
local has_escape = false
|
||||
local last
|
||||
for j = i + 1, #str do
|
||||
local x = str:byte(j)
|
||||
|
||||
if x < 32 then
|
||||
decode_error(str, j, "control character in string")
|
||||
end
|
||||
|
||||
if last == 92 then -- "\\" (escape char)
|
||||
if x == 117 then -- "u" (unicode escape sequence)
|
||||
local hex = str:sub(j + 1, j + 5)
|
||||
if not hex:find("%x%x%x%x") then
|
||||
decode_error(str, j, "invalid unicode escape in string")
|
||||
end
|
||||
if hex:find("^[dD][89aAbB]") then
|
||||
has_surrogate_escape = true
|
||||
else
|
||||
has_unicode_escape = true
|
||||
end
|
||||
else
|
||||
local c = string.char(x)
|
||||
if not escape_chars[c] then
|
||||
decode_error(str, j, "invalid escape char '" .. c .. "' in string")
|
||||
end
|
||||
has_escape = true
|
||||
end
|
||||
last = nil
|
||||
|
||||
elseif x == 34 then -- '"' (end of string)
|
||||
local s = str:sub(i + 1, j - 1)
|
||||
if has_surrogate_escape then
|
||||
s = s:gsub("\\u[dD][89aAbB]..\\u....", parse_unicode_escape)
|
||||
end
|
||||
if has_unicode_escape then
|
||||
s = s:gsub("\\u....", parse_unicode_escape)
|
||||
end
|
||||
if has_escape then
|
||||
s = s:gsub("\\.", escape_char_map_inv)
|
||||
end
|
||||
return s, j + 1
|
||||
|
||||
else
|
||||
last = x
|
||||
end
|
||||
end
|
||||
decode_error(str, i, "expected closing quote for string")
|
||||
end
|
||||
|
||||
|
||||
local function parse_number(str, i)
|
||||
local x = next_char(str, i, delim_chars)
|
||||
local s = str:sub(i, x - 1)
|
||||
local n = tonumber(s)
|
||||
if not n then
|
||||
decode_error(str, i, "invalid number '" .. s .. "'")
|
||||
end
|
||||
return n, x
|
||||
end
|
||||
|
||||
|
||||
local function parse_literal(str, i)
|
||||
local x = next_char(str, i, delim_chars)
|
||||
local word = str:sub(i, x - 1)
|
||||
if not literals[word] then
|
||||
decode_error(str, i, "invalid literal '" .. word .. "'")
|
||||
end
|
||||
return literal_map[word], x
|
||||
end
|
||||
|
||||
|
||||
local function parse_array(str, i)
|
||||
local res = {}
|
||||
local n = 1
|
||||
i = i + 1
|
||||
while 1 do
|
||||
local x
|
||||
i = next_char(str, i, space_chars, true)
|
||||
-- Empty / end of array?
|
||||
if str:sub(i, i) == "]" then
|
||||
i = i + 1
|
||||
break
|
||||
end
|
||||
-- Read token
|
||||
x, i = parse(str, i)
|
||||
res[n] = x
|
||||
n = n + 1
|
||||
-- Next token
|
||||
i = next_char(str, i, space_chars, true)
|
||||
local chr = str:sub(i, i)
|
||||
i = i + 1
|
||||
if chr == "]" then break end
|
||||
if chr ~= "," then decode_error(str, i, "expected ']' or ','") end
|
||||
end
|
||||
return res, i
|
||||
end
|
||||
|
||||
|
||||
local function parse_object(str, i)
|
||||
local res = {}
|
||||
i = i + 1
|
||||
while 1 do
|
||||
local key, val
|
||||
i = next_char(str, i, space_chars, true)
|
||||
-- Empty / end of object?
|
||||
if str:sub(i, i) == "}" then
|
||||
i = i + 1
|
||||
break
|
||||
end
|
||||
-- Read key
|
||||
if str:sub(i, i) ~= '"' then
|
||||
decode_error(str, i, "expected string for key")
|
||||
end
|
||||
key, i = parse(str, i)
|
||||
-- Read ':' delimiter
|
||||
i = next_char(str, i, space_chars, true)
|
||||
if str:sub(i, i) ~= ":" then
|
||||
decode_error(str, i, "expected ':' after key")
|
||||
end
|
||||
i = next_char(str, i + 1, space_chars, true)
|
||||
-- Read value
|
||||
val, i = parse(str, i)
|
||||
-- Set
|
||||
res[key] = val
|
||||
-- Next token
|
||||
i = next_char(str, i, space_chars, true)
|
||||
local chr = str:sub(i, i)
|
||||
i = i + 1
|
||||
if chr == "}" then break end
|
||||
if chr ~= "," then decode_error(str, i, "expected '}' or ','") end
|
||||
end
|
||||
return res, i
|
||||
end
|
||||
|
||||
|
||||
local char_func_map = {
|
||||
[ '"' ] = parse_string,
|
||||
[ "0" ] = parse_number,
|
||||
[ "1" ] = parse_number,
|
||||
[ "2" ] = parse_number,
|
||||
[ "3" ] = parse_number,
|
||||
[ "4" ] = parse_number,
|
||||
[ "5" ] = parse_number,
|
||||
[ "6" ] = parse_number,
|
||||
[ "7" ] = parse_number,
|
||||
[ "8" ] = parse_number,
|
||||
[ "9" ] = parse_number,
|
||||
[ "-" ] = parse_number,
|
||||
[ "t" ] = parse_literal,
|
||||
[ "f" ] = parse_literal,
|
||||
[ "n" ] = parse_literal,
|
||||
[ "[" ] = parse_array,
|
||||
[ "{" ] = parse_object,
|
||||
}
|
||||
|
||||
|
||||
parse = function(str, idx)
|
||||
local chr = str:sub(idx, idx)
|
||||
local f = char_func_map[chr]
|
||||
if f then
|
||||
return f(str, idx)
|
||||
end
|
||||
decode_error(str, idx, "unexpected character '" .. chr .. "'")
|
||||
end
|
||||
|
||||
|
||||
function json.decode(str)
|
||||
if type(str) ~= "string" then
|
||||
error("expected argument of type string, got " .. type(str))
|
||||
end
|
||||
local res, idx = parse(str, next_char(str, 1, space_chars, true))
|
||||
idx = next_char(str, idx, space_chars, true)
|
||||
if idx <= #str then
|
||||
decode_error(str, idx, "trailing garbage")
|
||||
end
|
||||
return res
|
||||
end
|
||||
|
||||
|
||||
return json
|
|
@ -1,168 +0,0 @@
|
|||
-- 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,
|
||||
}
|
|
@ -1,84 +0,0 @@
|
|||
-- lostsphear (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 = 1297
|
||||
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
|
|
@ -1,107 +0,0 @@
|
|||
-- 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
|
|
@ -1,66 +0,0 @@
|
|||
-- puyopuyo (modified bin.lua) --
|
||||
|
||||
checksum = require("lib.checksum")
|
||||
|
||||
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 setChecksum()
|
||||
lt = {0,79764919,159529838,222504665,319059676,398814059,445009330,507990021,638119352,583659535,797628118,726387553,890018660,835552979,1015980042,944750013,1276238704,1221641927,1167319070,1095957929,1595256236,1540665371,1452775106,1381403509,1780037320,1859660671,1671105958,1733955601,2031960084,2111593891,1889500026,1952343757,2552477408,2632100695,2443283854,2506133561,2334638140,2414271883,2191915858,2254759653,3190512472,3135915759,3081330742,3009969537,2905550212,2850959411,2762807018,2691435357,3560074640,3505614887,3719321342,3648080713,3342211916,3287746299,3467911202,3396681109,4063920168,4143685023,4223187782,4286162673,3779000052,3858754371,3904687514,3967668269,881225847,809987520,1023691545,969234094,662832811,591600412,771767749,717299826,311336399,374308984,453813921,533576470,25881363,88864420,134795389,214552010,2023205639,2086057648,1897238633,1976864222,1804852699,1867694188,1645340341,1724971778,1587496639,1516133128,1461550545,1406951526,1302016099,1230646740,1142491917,1087903418,2896545431,2825181984,2770861561,2716262478,3215044683,3143675388,3055782693,3001194130,2326604591,2389456536,2200899649,2280525302,2578013683,2640855108,2418763421,2498394922,3769900519,3832873040,3912640137,3992402750,4088425275,4151408268,4197601365,4277358050,3334271071,3263032808,3476998961,3422541446,3585640067,3514407732,3694837229,3640369242,1762451694,1842216281,1619975040,1682949687,2047383090,2127137669,1938468188,2001449195,1325665622,1271206113,1183200824,1111960463,1543535498,1489069629,1434599652,1363369299,622672798,568075817,748617968,677256519,907627842,853037301,1067152940,995781531,51762726,131386257,177728840,240578815,269590778,349224269,429104020,491947555,4046411278,4126034873,4172115296,4234965207,3794477266,3874110821,3953728444,4016571915,3609705398,3555108353,3735388376,3664026991,3290680682,3236090077,3449943556,3378572211,3174993278,3120533705,3032266256,2961025959,2923101090,2868635157,2813903052,2742672763,2604032198,2683796849,2461293480,2524268063,2284983834,2364738477,2175806836,2238787779,1569362073,1498123566,1409854455,1355396672,1317987909,1246755826,1192025387,1137557660,2072149281,2135122070,1912620623,1992383480,1753615357,1816598090,1627664531,1707420964,295390185,358241886,404320391,483945776,43990325,106832002,186451547,266083308,932423249,861060070,1041341759,986742920,613929101,542559546,756411363,701822548,3316196985,3244833742,3425377559,3370778784,3601682597,3530312978,3744426955,3689838204,3819031489,3881883254,3928223919,4007849240,4037393693,4100235434,4180117107,4259748804,2310601993,2373574846,2151335527,2231098320,2596047829,2659030626,2470359227,2550115596,2947551409,2876312838,2788305887,2733848168,3165939309,3094707162,3040238851,2985771188}
|
||||
gameFileBuffer = {}
|
||||
for i = 1, 2046 do
|
||||
gameFileBuffer[i] = saveFileBuffer[i]
|
||||
end
|
||||
crc = checksum.crc32(string.char(table.unpack(gameFileBuffer)), lt)
|
||||
saveFileBuffer[2047] = crc & 0xFF
|
||||
saveFileBuffer[2048] = (crc & (0xFF << 8)) >> 8
|
||||
end
|
||||
|
||||
function getModifiedSaveFile()
|
||||
setChecksum()
|
||||
return saveFileBuffer
|
||||
end
|
|
@ -1,84 +0,0 @@
|
|||
-- 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.
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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Reference in a new issue