diff --git a/hyrule-warriors/APP.BIN b/hyrule-warriors/APP.BIN
new file mode 100644
index 0000000..ce836e6
Binary files /dev/null and b/hyrule-warriors/APP.BIN differ
diff --git a/hyrule-warriors/_index.html b/hyrule-warriors/_index.html
new file mode 100644
index 0000000..2facd27
--- /dev/null
+++ b/hyrule-warriors/_index.html
@@ -0,0 +1,86 @@
+
+
+
+ Savegame Editor – Hyrule Warriors
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Materials
+
+
+
+
+
+
+
+
Characters
+
+
+
Damage
+
Level
+
Experience
+
+
+
+
Maps
+
+
+
+
+
+
Weapons
+
+
+
+
Approximate power:
+
+
+
Weapon type
+
Weapon ID
+
Base Power
+
Stars
+
+
+
+
+
+
+
+
diff --git a/hyrule-warriors/favicon.png b/hyrule-warriors/favicon.png
new file mode 100644
index 0000000..7952e37
Binary files /dev/null and b/hyrule-warriors/favicon.png differ
diff --git a/hyrule-warriors/hyrule-warriors.js b/hyrule-warriors/hyrule-warriors.js
new file mode 100644
index 0000000..484dda4
--- /dev/null
+++ b/hyrule-warriors/hyrule-warriors.js
@@ -0,0 +1,694 @@
+/*
+ Hyrule Warriors v20161101
+ by Marc Robledo 2016
+*/
+/* reference: http://gbatemp.net/threads/hyrule-warriors-save-editing.425943/ */
+
+var currentWeapon=0;
+var weaponFilters=[
+ null
+];
+SavegameEditor={
+ Name:'Hyrule Warriors',
+ Filename:'APP.BIN',
+
+ /* Constants */
+ Constants:{
+ CHARACTER_SIZE: 0x38,
+ CHARACTER_LEVEL_OFFSET:0x07,
+ CHARACTER_EXP_OFFSET:0x08,
+ CHARACTER_PACKS:[
+ {
+ Offset:0x8c184,
+ Names:[
+ 'Link',
+ 'Zelda',
+ 'Sheik',
+ 'Impa',
+ 'Ganondorf',
+ 'Darunia',
+ 'Ruto',
+ 'Agitha',
+ 'Midna',
+ 'Fi',
+ 'Girahim',
+ 'Zant',
+ null,
+ 'Lana'
+ ]
+ },{
+ Offset:0x8cb24,
+ Names:[
+ 'Cia',
+ 'Volga',
+ 'Wizzro',
+ 'Twili Midna',
+ 'Young Link',
+ 'Tingle',
+ 'Ganon',
+ 'Cucco',
+ 'Linkle',
+ 'Skull Kid',
+ 'Toon Link',
+ 'Tetra',
+ 'King Daphnes',
+ 'Medli',
+ 'Marin',
+ 'Toon Zelda',
+ 'Ravio',
+ 'Yuga'
+ ]
+ }
+ ],
+
+ MAPS:[
+ {
+ Title:'Adventure Map',
+ Offset:0x141e8,
+ Items:[
+ 'Compass',
+ 'Bombs',
+ 'Candle',
+ 'Ladder',
+ 'Power Bracelet',
+ 'Water Bombs',
+ 'Digging Mitts',
+ 'Ice Arrows',
+ 'Raft',
+ 'Hookshot',
+ 'Recorder',
+ 'Goddess\'s Harp'
+ ]
+ },{
+ Title:'Master Quest Map',
+ Offset: 0x19240,
+ Items:[
+ 'Compass',
+ 'Bombs',
+ 'Candle',
+ 'Ladder',
+ 'Power Bracelet',
+ 'Water Bombs',
+ 'Digging Mitts',
+ 'Ice Arrows',
+ 'Raft',
+ 'Hookshot',
+ 'Recorder',
+ 'Goddess\'s Harp'
+ ]
+ },{
+ Title:'Twilight Map',
+ Offset: 0x1Ba6c,
+ Items:[
+ 'Compass',
+ 'Bombs',
+ null,
+ null,
+ null,
+ 'Water Bombs',
+ 'Digging Mitts',
+ null,
+ null,
+ null,
+ null,
+ null,
+ 'Lantern',
+ 'Jar',
+ 'Fishing Rod',
+ 'Clawshot',
+ 'Spinner',
+ 'Ooccoo',
+ 'Tears of Light',
+ 'Tears of Twilight'
+ ]
+ },{
+ Title:'Termina Map',
+ Offset:0x1e298,
+ Items:[
+ 'Compass',
+ 'Bombs',
+ null,
+ null,
+ null,
+ null,
+ null,
+ 'Ice Arrows',
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 'Song of Time',
+ 'Inverted Song of Time',
+ 'Deku Stick',
+ 'Deku Mask',
+ 'Goron Mask',
+ 'Zora Mask',
+ 'Mask of Truth',
+ 'Majora\'s Mask',
+ 'Giant Summon'
+ ]
+ }
+ ],
+
+
+ RUPEES_OFFSET: 0x14c,
+ MATERIALS_OFFSET: 0x13d2c,
+ MATERIALS_DISCOVERED: 0x13e2c,
+ MATERIALS_DISCOVERED_ALL:[
+ 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0x1f, 0x00, 0x00
+ ],
+ MATERIALS:[
+ 'Metal Plate',
+ 'Monster Tooth',
+ 'Old Rag',
+ 'Soldier\'s Uniform',
+ 'Rock',
+ 'Aeralfos Leather',
+ 'Fiery Aeralfos Leather',
+ 'Gibdo Bandage',
+ 'ReDead Bandage',
+ 'Lizalfos Scale',
+ 'Dinolfos Fang',
+ 'Moblin Flank',
+ 'Shield-Moblin Helmet',
+ 'Piece of Darknut Armor',
+ 'Stalmaster Wrist Bone',
+ 'Big Poe Necklace',
+ 'Essence of Icy Big Poe',
+ 'Hylian Captain Gauntlet',
+ 'Goron Armor Breastplate',
+ 'Ganon\'s Mane',
+ 'King Dodongo\'s Claws',
+ 'Gohma\'s Acid',
+ 'Manhandla\'s Toxic Dust',
+ 'Argorok\'s Embers',
+ 'The Imprisoned\'s Scales',
+ 'Cia\'s Bracelet',
+ 'Volga\'s Helmet',
+ 'Wizzro\'s Robe',
+ 'Link\'s Boots',
+ 'Lana\'s Hair Clip',
+ 'Zelda\'s Brooch',
+ 'Impa\'s Hair Band',
+ 'Ganondorf\'s Gauntlet',
+ 'Sheik\'s Kunai',
+ 'Darunia\'s Spikes',
+ 'Ruto\'s Earrings',
+ 'Agitha\'s Basket',
+ 'Midna\'s Hair',
+ 'Fi\'s Heels',
+ 'Ghirahim\'s Sash',
+ 'Zant\'s Magic Gem',
+ 'Round Aeralfos Shield',
+ 'Fiery Aeralfos Wing',
+ 'Heavy Gibdo Sword',
+ 'ReDead Knight Ashes',
+ 'Lizalfos Gauntlet',
+ 'Dinolfos Arm Guard',
+ 'Moblin Spear',
+ 'Metal Moblin Shield',
+ 'Large Darknut Sword',
+ 'Stalmaster\'s Skull',
+ 'Big Poe\'s Lantern',
+ 'Icy Big Poe\'s Talisman',
+ 'Holy Hylian Shield',
+ 'Thick Goron Helmet',
+ 'Ganon\'s Fang',
+ 'King Dodongo\'s Crystal',
+ 'Gohma\'s Lens',
+ 'Manhandla\'s Sapling',
+ 'Argorok\'s Stone',
+ 'The Imprisoned\'s Pillar',
+ 'Cia\'s Staff',
+ 'Volga\'s Dragon Spear',
+ 'Wizzro\'s Ring',
+ 'Link\'s Scarf',
+ 'Lana\'s Cloak',
+ 'Zelda\'s Tiara',
+ 'Impa\'s Breastplate',
+ 'Ganondorf\'s Jewel',
+ 'Sheik\'s Turban',
+ 'Darunia\'s Bracelet',
+ 'Ruto\'s Scale',
+ 'Agitha\'s Pendant',
+ 'Midna\'s Fused Shadow',
+ 'Fi\'s Crystal',
+ 'Ghirahim\'s Cape',
+ 'Zant\'s Helmet'
+ ],
+
+ MAX_WEAPONS:1030,
+ WEAPONS_OFFSET:0x8d74c,
+ WEAPON_SIZE:0x4c,
+ WEAPON_TYPES:[
+ {value:0, name:'(no weapon)'},
+ {value:1, name:'Normal weapon (blank?)'},
+ {value:2, name:'Normal weapon (NEW)'},
+ {value:3, name:'Normal weapon'},
+ {value:9, name:'Master Sword (blank?)'},
+ {value:10, name:'Master sword (NEW)'},
+ {value:11, name:'Master sword'},
+ {value:17, name:'Legendary skill (blank?)'},
+ {value:18, name:'Legendary skill (NEW)'},
+ {value:19, name:'Legendary skill'},
+ {value:25, name:'MS+LS (hack, blank?)'},
+ {value:26, name:'MS+LS (hack, NEW)'},
+ {value:27, name:'MS+LS (hack)'}
+ ],
+ WEAPON_IDS:[
+ 'Knight\'s Sword (Link - Hylian Sword Level 1)',
+ 'White Sword (Link - Hylian Sword Level 2)',
+ 'Magical Sword (Link - Hylian Sword Level 3)',
+ 'Fire Rod (Link - Magic Rod Level 1)',
+ 'Prism Rod (Link - Magic Rod Level 2)',
+ 'Magical Rod (Link - Magic Rod Level 3)',
+ 'Great Fountain Fairy (Link - Great Fairy Level 1)',
+ 'Great Forest Fairy (Link - Great Fairy Level 2)',
+ 'Great Sky Fairy (Link - Great Fairy Level 3)',
+ 'Silver Gauntlets (Link - Gauntlets Level 1)',
+ 'Golden Gauntlets (Link - Gauntlets Level 2)',
+ 'Power Gloves (Link - Gauntlets Level 3)',
+ 'Spirit\'s Tome (Lana - Book of Sorcery Level 1)',
+ 'Sealing Tome (Lana - Book of Sorcery Level 2)',
+ 'Sorceress Tome (Lana - Book of Sorcery Level 3)',
+ 'Deku Spear (Lana - Spear Level 1)',
+ 'Kokiri Spear (Lana - Spear Level 2)',
+ 'Faron Spear (Lana - Spear Level 3)',
+ 'Gate of Time (Lana - Summoning Gate Level 1)',
+ 'Guardian\'s Gate (Lana - Summoning Gate Level 2)',
+ 'Gate of Souls (Lana - Summoning Gate Level 3)',
+ 'Polished Rapier (Zelda - Rapier Level 1)',
+ 'Glittering Rapier (Zelda - Rapier Level 2)',
+ 'Gleaming Rapier (Zelda - Rapier Level 3)',
+ 'Wind Waker (Zelda - Baton Level 1)',
+ 'Sacred Baton (Zelda - Baton Level 2)',
+ 'Glorious Baton (Zelda - Baton Level 3)',
+ 'Giant\'s Knife (Impa - Giant Blade Level 1)',
+ 'Biggoron\'s Knife (Impa - Giant Blade Level 2)',
+ 'Biggoron\'s Sword (Impa - Giant Blade Level 3)',
+ 'Guardian Naginata (Impa - Naginata Level 1)',
+ 'Scorching Naginata (Impa - Naginata Level 2)',
+ 'Sheikah Naginata (Impa - Naginata Level 3)',
+ 'Swords of Despair (Ganondorf - Great Swords Level 1)',
+ 'Swords of Darkness (Ganondorf - Great Swords Level 2)',
+ 'Swords of Demise (Ganondorf - Great Swords Level 3)',
+ 'Goddess\'s Harp (Sheik - Harp Level 1)',
+ 'Typhoon Harp (Sheik - Harp Level 2)',
+ 'Triforce Harp (Sheik - Harp Level 3)',
+ 'Magic Hammer (Darunia - Hammer Level 1)',
+ 'Igneous Hammer (Darunia - Hammer Level 2)',
+ 'Megaton Hammer (Darunia - Hammer Level 3)',
+ 'Silver Scale (Ruto - Zora Scale Level 1)',
+ 'Golden Scale (Ruto - Zora Scale Level 2)',
+ 'Water Dragon Scale (Ruto - Zora Scale Level 3)',
+ 'Butterfly Parasol (Agitha - Parasol Level 1)',
+ 'Luna Parasol (Agitha - Parasol Level 2)',
+ 'Princess Parasol (Agitha - Parasol Level 3)',
+ 'Cursed Shackle (Midna - Shackle Level 1)',
+ 'Twilight Shackle (Midna - Shackle Level 2)',
+ 'Sol Shackle (Midna - Shackle Level 3)',
+ 'Goddess Sword (Fi - Goddess Blade Level 1)',
+ 'Goddess Longsword (Fi - Goddess Blade Level 2)',
+ 'True Goddess Blade (Fi - Goddess Blade Level 3)',
+ 'Demon Tribe Sword (Ghirahim - Demon Blade Level 1)',
+ 'Demon Longsword (Ghirahim - Demon Blade Level 2)',
+ 'True Demon Blade (Ghirahim - Demon Blade Level 3)',
+ 'Usurper\'s Scimitars (Zant - Scimitars Level 1)',
+ 'Shadow Scimitars (Zant - Scimitars Level 2)',
+ 'Scimitars of Twilight (Zant - Scimitars Level 3)',
+ '[unknown weapon]',
+ 'Master Sword (Link - Master Sword)',
+ '8-Bit Wooden Sword (Link - Hylian Sword Level 3)',
+ '8-Bit Candle (Link - Magic Rod Level 3)',
+ '8-Bit Fairy (Link - Great Fairy Level 3)',
+ '8-Bit Power Bracelets (Link - Gauntlets Level 3)',
+ '8-Bit Book of Magic (Lana - Book of Sorcery Level 3)',
+ '8-Bit Magical Rod? (Lana - Spear Level 3)',
+ '8-Bit Compass (Lana - Summoning Gate Level 3)',
+ '8-Bit White Sword? (Zelda - Rapier Level 3)',
+ '8-Bit Recorder (Zelda - Baton Level 3)',
+ '8-Bit Boomerang? (Impa - Giant Blade Level 3)',
+ '8-Bit Magical Sword? (Impa - Naginata Level 3)',
+ '8-Bit Magical Keys (Ganondorf - Great Swords Level 3)',
+ '8-Bit Stepladder (Sheik - Harp Level 3)',
+ '8-Bit Food (Darunia - Hammer Level 3)',
+ '8-Bit Clock (Ruto - Zora Scale Level 3)',
+ '8-Bit Rupee (Agitha - Parasol Level 3)',
+ '8-Bit Red Ring (Midna - Shackle Level 3)',
+ '8-Bit Silver Arrow (Fi - Goddess Blade Level 3)',
+ '8-Bit Arrow (Ghirahim - Demon Blade Level 3)',
+ '8-Bit Magic Boomerangs (Zant - Scimitars Level 3)',
+ 'Scepter of Time (Cia - Scepter Level 1)',
+ 'Guardian\'s Scepter (Cia - Scepter Level 2)',
+ 'Scepter of Souls (Cia - Scepter Level 3)',
+ 'Dragonbone Pike (Volga - Dragon Spear Level 1)',
+ 'Stonecleaver Claw (Volga - Dragon Spear Level 2)',
+ 'Flesh-Render Fang (Volga - Dragon Spear Level 3)',
+ 'Blue Ring (Wizzro - Ring Level 1)',
+ 'Red Ring (Wizzro - Ring Level 2)',
+ 'Magical Ring (Wizzro - Ring Level 3)',
+ 'Epona (Link - Horse Level 1)',
+ 'Twilight Epona (Link - Horse Level 2)',
+ 'Epona of Time (Link - Horse Level 3)',
+ 'Mirror of Shadows (Twili Midna - Mirror Level 1)',
+ 'Mirror of Silence (Twili Midna - Mirror Level 2)',
+ 'Mirror of Twilight (Twili Midna - Mirror Level 3)',
+ 'Ancient Spinner (Link - Spinner Level 1)',
+ 'Enhanced Spinner (Link - Spinner Level 2)',
+ 'Triforce Spinner (Link - Spinner Level 3)',
+ 'Old Dominion Rod (Zelda - Dominion Rod Level 1)',
+ 'High Dominion Rod (Zelda - Dominion Rod Level 2)',
+ 'Royal Dominion Rod (Zelda - Dominion Rod Level 3)',
+ 'Fierce Deity Mask (Young Link - Mask Level 1)',
+ 'Furious Deity Mask (Young Link - Mask Level 2)',
+ 'Vengeful Deity Mask (Young Link - Mask Level 3)',
+ 'Rosy Balloon (Tingle - Balloon Level 1)',
+ 'Love-Filled Balloon (Tingle - Balloon Level 2)',
+ 'Mr. Fairy Balloon (Tingle - Balloon Level 3)',
+ '*** Ganon\'s Rage (Ganon) RESERVED, DO NOT USE ***',
+ '*** Cucco\'s Spirit (Cucco) RESERVED, DO NOT USE ***',
+ 'Thief\'s Trident (Ganondorf - Trident Level 1)',
+ 'King of Evil Trident (Ganondorf - Trident Level 2)',
+ 'Trident of Demise (Ganondorf - Trident Level 3)',
+ 'Simple Crossbows (Linkle - Crossbows Level 1)',
+ 'Hylian Crossbows (Linkle - Crossbows Level 2)',
+ 'Legend\'s Crossbows (Linkle - Crossbows Level 3)',
+ 'Fairy Ocarina (Skull Kid - Ocarina Level 1)',
+ 'Lunar Ocarina (Skull Kid - Ocarina Level 2)',
+ 'Majora\'s Ocarina (Skull Kid - Ocarina Level 3)',
+ 'Hero\'s Sword (Toon Link - Light Sword Level 1)',
+ 'Phantom Sword (Toon Link - Light Sword Level 2)',
+ 'Lokomo Sword (Toon Link - Light Sword Level 3)',
+ 'Pirate Cutlass (Tetra - Cutlass Level 1)',
+ 'Jeweled Cutlass (Tetra - Cutlass Level 2)',
+ 'Regal Cutlass (Tetra - Cutlass Level 3)',
+ 'Windfall Sail (King Daphnes - Sail Level 1)',
+ 'Swift Sail (King Daphnes - Sail Level 2)',
+ 'Sail of Red Lions (King Daphnes - Sail Level 3)',
+ 'Sacred Harp (Medli - Rito Harp Level 1)',
+ 'Earth God\'s Harp (Medli - Rito Harp Level 2)',
+ 'Din\'s Harp (Medli - Rito Harp Level 3)',
+ 'Sea Lily\'s Bell (Marin - Bell Level 1)',
+ 'Wavelet Bell (Marin - Bell Level 2)',
+ 'Awakening Bell (Marin - Bell Level 3)',
+ 'Winged Boots (Linkle - Boots Level 1)',
+ 'Roc Boots (Linkle - Boots Level 2)',
+ 'Pegasus Boots (Linkle - Boots Level 3)',
+ 'Protector Sword (Toon Zelda - Sword Level 1)',
+ 'Warp Sword (Toon Zelda - Sword Level 2)',
+ 'Wrecker Sword (Toon Zelda - Sword Level 3)',
+ 'Sand Wand (Toon Link - Wand Level 1)',
+ 'Jeweled Sand Wand (Toon Link - Wand Level 2)',
+ 'Nice Sand Wand (Toon Link - Wand Level 3)',
+ 'Wooden Hammer (Ravio - Rental Hammer Level 1)',
+ 'White Bunny Hammer (Ravio - Rental Hammer Level 2)',
+ 'Nice Hammer (Ravio - Rental Hammer Level 3)',
+ 'Wooden Frame (Yuga - Picture Frame Level 1)',
+ 'Frame of Sealing (Yuga - Picture Frame Level 2)',
+ 'Demon King\'s Frame (Yuga - Picture Frame Level 3)',
+ 'Unknown (Unk - Unk Level 1)',
+ 'Unknown (Unk - Unk Level 2)',
+ 'Unknown (Unk - Unk Level 3)',
+ {value:4294967295,name:'-'}
+ ],
+ WEAPON_SKILLS:[
+ '(blank)',
+ 'Strong Att.+',
+ 'Strength II',
+ 'Strength III',
+ 'Strength IV',
+ 'Strength V',
+ 'Strength VI',
+ 'Fire+',
+ 'Water+',
+ 'Lightning+',
+ 'Light+',
+ 'Darkness+',
+ 'VS Legend',
+ 'VS Time',
+ 'VS Twilight',
+ 'VS Skyward',
+ 'VS Sorceress',
+ 'VS Beast',
+ 'VS Dragon',
+ 'VS Undead',
+ 'VS Soldier',
+ 'VS Ganon',
+ 'EXP+',
+ 'Rupees+',
+ 'Materials+',
+ 'Slots+',
+ 'Stars+',
+ 'Hearts+',
+ 'Health+',
+ 'Special+',
+ 'Bombs+',
+ 'Arrows+',
+ 'Boomerang+',
+ 'Hookshot+',
+ 'One-Hit Kill',
+ 'Sturdy Feet',
+ 'Regen',
+ 'Defenseless',
+ 'No Healing',
+ 'Adversity',
+ 'Compatriot',
+ 'Evil\'s Bane',
+ 'Legendary',
+ 'Special Attack+',
+ 'Finishing Blow+',
+ 'Regular Attack+',
+ 'Heart-strong',
+ 'Focus Spirit+',
+ 'Hasty Attacks',
+ {value:4294967295,name:'-'}
+ ]
+ },
+
+ /* private functions */
+ discoverMaterials:function(){
+ hide('button-discover-materials');
+ for(var i=0; i
+
+
+ Savegame Editor – Hyrule Warriors
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Materials
+
+
+
+
+
+
+
+
+
+
Characters
+
+
+
+
Damage
+
Level
+
Experience
+
+
+
+
+
Maps
+
+
+
+
Weapons
+
+
+
+
Approximate power:
+
+
+
Weapon type
+
Weapon ID
+
Base Power
+
Stars
+
+
+
+
+
+
+
+
diff --git a/hyrule-warriors/savegame-editor.appcache b/hyrule-warriors/savegame-editor.appcache
new file mode 100644
index 0000000..ccc7523
--- /dev/null
+++ b/hyrule-warriors/savegame-editor.appcache
@@ -0,0 +1,12 @@
+CACHE MANIFEST
+# last update 2017-07-06
+#CACHE:
+index.html
+favicon.png
+hyrule-warriors.js
+../savegame-editor.css
+../savegame-editor.js
+
+# force these files to be loaded in network
+NETWORK:
+*
\ No newline at end of file
diff --git a/hyrule-warriors/thumb.jpg b/hyrule-warriors/thumb.jpg
new file mode 100644
index 0000000..e89993d
Binary files /dev/null and b/hyrule-warriors/thumb.jpg differ
diff --git a/kid-icarus-uprising/01.sav b/kid-icarus-uprising/01.sav
new file mode 100644
index 0000000..668cdba
Binary files /dev/null and b/kid-icarus-uprising/01.sav differ
diff --git a/kid-icarus-uprising/favicon.png b/kid-icarus-uprising/favicon.png
new file mode 100644
index 0000000..fb52c9c
Binary files /dev/null and b/kid-icarus-uprising/favicon.png differ
diff --git a/kid-icarus-uprising/index.html b/kid-icarus-uprising/index.html
new file mode 100644
index 0000000..1081083
--- /dev/null
+++ b/kid-icarus-uprising/index.html
@@ -0,0 +1,99 @@
+
+
+
+ Savegame Editor – Kid Icarus: Uprising
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Hearts
+
+
+
+
+
+
+
+
+
+
+
+
Unlock unreleased trophies
+
+
+
+
+
+
Stats
+
+
+
+
Weapons
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Approximate value:
+
+
+
+
+
diff --git a/kid-icarus-uprising/kid-icarus-uprising.js b/kid-icarus-uprising/kid-icarus-uprising.js
new file mode 100644
index 0000000..c91894c
--- /dev/null
+++ b/kid-icarus-uprising/kid-icarus-uprising.js
@@ -0,0 +1,768 @@
+/*
+ Kid Icarus: Uprising for HTML5 Save Editor v20170706
+ by Marc Robledo 2016-2017
+*/
+
+var currentWeapon=0
+SavegameEditor={
+ Name:'Kid Icarus: Uprising',
+ Filename:'0x.sav',
+
+ /* Constants */
+ Constants:{
+ NUM_TREASURE: 120*3,
+ NUM_TROPHIES: 412,
+ NUM_WEAPONS: 1000,
+ NUM_LEVELS: 25,
+ WEAPON_SIZE: 0x20,
+ MODIFIERS:[
+ '-',
+ 'Standing ch. shot +1',
+ 'Standing ch. shot +2',
+ 'Standing ch. shot +3',
+ 'Standing ch. shot +4',
+ 'Standing ch. shot -1',
+ 'Standing ch. shot -2',
+ 'Dash ch. shot +1',
+ 'Dash ch. shot +2',
+ 'Dash ch. shot +3',
+ 'Dash ch. shot +4',
+ 'Dash ch. shot -1',
+ 'Dash ch. shot -2',
+ 'Forward-dash ch. shot +1',
+ 'Forward-dash ch. shot +2',
+ 'Forward-dash ch. shot +3',
+ 'Forward-dash ch. shot +4',
+ 'Side-dash ch. shot +1',
+ 'Side-dash ch. shot +2',
+ 'Side-dash ch. shot +3',
+ 'Side-dash ch. shot +4',
+ 'Backward-dash ch. shot +1',
+ 'Backward-dash ch. shot +2',
+ 'Backward-dash ch. shot +3',
+ 'Backward-dash ch. shot +4',
+ 'Standing cont. fire +1',
+ 'Standing cont. fire +2',
+ 'Standing cont. fire +3',
+ 'Standing cont. fire +4',
+ 'Standing cont. fire -1',
+ 'Standing cont. fire -2',
+ 'Dash cont. fire +1',
+ 'Dash cont. fire +2',
+ 'Dash cont. fire +3',
+ 'Dash cont. fire +4',
+ 'Dash cont. fire -1',
+ 'Dash cont. fire -2',
+ 'Forward-dash cont. fire +1',
+ 'Forward-dash cont. fire +2',
+ 'Forward-dash cont. fire +3',
+ 'Forward-dash cont. fire +4',
+ 'Side-dash cont. fire +1',
+ 'Side-dash cont. fire +2',
+ 'Side-dash cont. fire +3',
+ 'Side-dash cont. fire +4',
+ 'Backward-dash cont. fire +1',
+ 'Backward-dash cont. fire +2',
+ 'Backward-dash cont. fire +3',
+ 'Backward-dash cont. fire +4',
+ 'Melee Combo +1',
+ 'Melee Combo +2',
+ 'Melee Combo +3',
+ 'Melee Combo +4',
+ 'Melee Combo -1',
+ 'Melee Combo -2',
+ 'Melee Dash Attack +1',
+ 'Melee Dash Attack +2',
+ 'Melee Dash Attack +3',
+ 'Melee Dash Attack +4',
+ 'Melee Dash Attack -1',
+ 'Melee Dash Attack -2',
+ 'Item Attack +1',
+ 'Item Attack +2',
+ 'Item Attack +3',
+ 'Item Attack +4',
+ 'Power Attack +1',
+ 'Power Attack +2',
+ 'Power Attack +3',
+ 'Power Attack +4',
+ 'Health +1',
+ 'Health +2',
+ 'Health +3',
+ 'Health +4',
+ 'Health +5',
+ 'Health +6',
+ 'Health -1',
+ 'Health -2',
+ 'Health -3',
+ 'Health -4',
+ 'Stamina +1',
+ 'Stamina +2',
+ 'Stamina +3',
+ 'Stamina +4',
+ 'Speed +1',
+ 'Speed +2',
+ 'Speed +3',
+ 'Speed +4',
+ 'Speed -1',
+ 'Speed -2',
+ 'Speed -3',
+ 'Speed -4',
+ 'Walking Speed +1',
+ 'Walking Speed +2',
+ 'Walking Speed +3',
+ 'Walking Speed +4',
+ 'Running speed +1',
+ 'Running speed +2',
+ 'Running speed +3',
+ 'Running speed +4',
+ 'Evasion +1',
+ 'Evasion +2',
+ 'Evasion +3',
+ 'Evasion +4',
+ 'Shot Defense +1',
+ 'Shot Defense +2',
+ 'Shot Defense +3',
+ 'Shot Defense +4',
+ 'Shot Defense -1',
+ 'Shot Defense -2',
+ 'Melee defense +1',
+ 'Melee defense +2',
+ 'Melee defense +3',
+ 'Melee defense +4',
+ 'Melee defense -1',
+ 'Melee defense -2',
+ 'Knockback Defense +1',
+ 'Knockback Defense +2',
+ 'Knockback Defense +3',
+ 'Knockback Defense +4',
+ 'Status resistance +1',
+ 'Status resistance +2',
+ 'Status resistance +3',
+ 'Status resistance +4',
+ 'Status resistance -1',
+ 'Status resistance -2',
+ 'Status resistance -3',
+ 'Status resistance -4',
+ 'Overall Defense +1',
+ 'Overall Defense +2',
+ 'Overall Defense +3',
+ 'Overall Defense +4',
+ 'Overall Defense +5',
+ 'Overall Defense +6',
+ 'Overall Defense +7',
+ 'Overall Defense +8',
+ 'Overall Defense -1',
+ 'Overall Defense -2',
+ 'Overall Defense -3',
+ 'Overall Defense -4',
+ 'Recovery Effect +1',
+ 'Recovery Effect +2',
+ 'Recovery Effect +3',
+ 'Recovery Effect +4',
+ 'Effect Duration +1',
+ 'Effect Duration +2',
+ 'Effect Duration +3',
+ 'Effect Duration +4',
+ 'Poison +1',
+ 'Poison +2',
+ 'Poison +3',
+ 'Poison +4',
+ 'Paralyse +1',
+ 'Paralyse +2',
+ 'Paralyse +3',
+ 'Paralyse +4',
+ 'Weakening +1',
+ 'Weakening +2',
+ 'Weakening +3',
+ 'Weakening +4',
+ 'Petrify +1',
+ 'Petrify +2',
+ 'Petrify +3',
+ 'Petrify +4',
+ 'Shaking +1',
+ 'Shaking +2',
+ 'Shaking +3',
+ 'Shaking +4',
+ 'Confusion +1',
+ 'Confusion +2',
+ 'Confusion +3',
+ 'Confusion +4',
+ 'Burning +1',
+ 'Burning +2',
+ 'Burning +3',
+ 'Burning +4',
+ 'Freezing +1',
+ 'Freezing +2',
+ 'Freezing +3',
+ 'Freezing +4',
+ 'Shot Range +1',
+ 'Shot Range +2',
+ 'Shot Range +3',
+ 'Shot Range -1',
+ 'Shot Range -2',
+ 'Shot Range -3',
+ 'Shot Homing +1',
+ 'Shot Homing +2',
+ 'Shot Homing +3',
+ 'Shot Homing -1',
+ 'Shot Homing -2',
+ 'Shot Homing -3',
+ 'Shot Cancellation +1',
+ 'Knockback Recovery +1',
+ 'Self Injury -1',
+ 'Self Injury -2',
+ 'Self Injury -3',
+ 'Full-health boost +1',
+ 'Full-health boost +2',
+ 'Full-health boost +3',
+ 'Full-health boost +4',
+ 'Full-health boost +5',
+ 'Full-health boost +6',
+ 'In Peril Auto-Dodge +1',
+ 'In Peril Auto-Dodge +2',
+ 'In Peril Auto-Dodge +3',
+ 'In Peril Attack Boost +1',
+ 'In Peril Attack Boost +2',
+ 'In Peril Attack Boost +3',
+ 'In Peril Attack Boost +4',
+ 'In Peril Attack Boost +5',
+ 'In Peril Attack Boost +6',
+ 'In Peril Attack Boost -1',
+ 'In Peril Attack Boost -2',
+ 'In Peril Attack Boost -3',
+ 'In Peril Attack Boost -4',
+ 'Heart Bonus +1',
+ 'Heart Bonus +2',
+ 'Heart Bonus +3',
+ 'Heart Bonus -1',
+ 'Heart Bonus -2',
+ 'Heart Bonus -3'
+ ],
+ MODIFIERS_VALUES:[
+ 0.0,
+ 9.2, 15.8, 22.4, 29, /* Standing Ch. Shot+ */
+ -6.4, -12.8, /* Standing Ch. Shot- */
+ 13.2, 23.3, 33.4, 43.6, /* Dash Ch. Shot+ */
+ -11.1, -22.1, /* Dash Ch. Shot- */
+ 11.2, 19.1, 26.9, 34.8, /* Fwd-Dash Ch. Shot+ */
+ 9.9, 16.7, 23.5, 30.4, /* Side-Dash Ch. Shot+ */
+ 10.6, 17.9, 25.2, 32.6, /* Bkwd-Dash Ch. Shot+ */
+ 7.9, 13, 18, 23.1, /* Standing Cont. Fire+ */
+ -5.1, -10.1, /* Standing Cont. Fire- */
+ 10.6, 17.2, 23.8, 30.4, /* Dash Cont. Fire+ */
+ -9.2, -18.5, /* Dash Cont. Fire- */
+ 8.6, 14.2, 19.7, 25.3, /* Fwd-Dash Cont. Fire+ */
+ 8.6, 14.2, 19.7, 25.3, /* Side-Dash Cont. Fire+ */
+ 8.6, 14.2, 19.7, 25.3, /* Bkwd-Dash Cont. Fire+ */
+ 9.2, 15.3, 21.4, 27.5, /* Melee Combo+ */
+ -6.4, -12.8, /* Melee Combo- */
+ 7.9, 12.6, 17.3, 22, /* Melee Dash Attack+ */
+ -5.5, -11, /* Melee Dash Attack- */
+ 14.5, 27.7, 40.9, 54.1, /* Item Attack+ */
+ 23.8, 40.3, 56.8, 73.3, /* Power Attack+ */
+ 9, 18.4, 27.9, 37.3, 46.7, 56.1, /* Health+ */
+ -8.1, -15.8, -23.5, -31.1, /* Health- */
+ 11.9, 17.9, 23.9, 29.9, /* Stamina+ */
+ 9.2, 17.2, 25.1, 33, /* Speed+ */
+ -11, -17.6, -24.2, -30.8, /* Speed- */
+ 6.6, 9.9, 13.2, 16.5, /* Walking Speed+ */
+ 7.9, 13.4, 18.9, 24.4, /* Running Speed+ */
+ 10.8, 17.2, 23.5, 29.9, /* Evasion+ */
+ 15, 29.8, 44.7, 59.6, /* Shot Defense+ */
+ -14.9, -31.2, /* Shot Defense- */
+ 9.9, 18.5, 27.1, 35.6, /* Melee Defense+ */
+ -8.9, -20.8, /* Melee Defense- */
+ 6.6, 13.2, 19.8, 26.4, /* Knockback Defense+ */
+ 12.8, 21.3, 29.8, 38.3, /* Status Resistance+ */
+ -7.7, -10.7, -13.6, -16.6, /* Status Resistance- */
+ 15, 25.8, 36.6, 47.5, 58.3, 69.2, 80, 90.9, /* Overall Defense+ */
+ -16.5, -25.7, -34.8, -44, /* Overall Defense- */
+ 15.8, 21.1, 26.4, 31.7, /* Recovery Effect+ */
+ 10.6, 20.2, 29.9, 39.6, /* Effect Duration+ */
+ 6.2, 10, 13.9, 17.8, /* Poison+ */
+ 7.9, 14.5, 21.1, 27.7, /* Paralysis+ */
+ 9.2, 16.4, 23.5, 30.6, /* Weakening+ */
+ 16.9, 20.9, 24.9, 28.8, /* Petrification+ */
+ 7.3, 14.1, 20.9, 27.7, /* Shaking+ */
+ 7.3, 14.1, 20.9, 27.7, /* Confusion+ */
+ 7.9, 13.9, 19.8, 25.7, /* Burning+ */
+ 20.2, 25.5, 30.8, 36.1, /* Freezing+ */
+ 13.9, 24.3, 34.8, /* Shot Range+ */
+ -5.9, -9.2, -12.5, /* Shot Range- */
+ 11.9, 18.7, 25.5, /* Shot Homing+ */
+ -4.6, -8.1, -11.7, /* Shot Homing- */
+ 42.5, /* Shot Cancellation+ */
+ 10.6, /* Knockback Recovery+ */
+ -8.8, -13.2, -17.6, /* Self Injury- */
+ 8.6, 12.3, 16.1, 19.8, 23.5, 27.3, /* Full Health Boost+ */
+ 7.7, 11.6, 15.4, /* In-peril Auto-dodge+ */
+ 9.9, 16, 22, 28.1, 34.2, 40.3, /* In-peril Attack Boost+ */
+ -10.7, -14.2, -17.8, -21.3, /* In-peril Attack Boost- */
+ 8.8, 17.6, 26.4, /* Heart Bonus+ */
+ -3.3, -5, -6.6 /* Heart Bonus- */
+ ],
+ STAR_RANGED_VALUES:[
+ 0.0, 14.9, 23.2, 31.5, 39.8, 48.1, 56.4, 64.7, 73.0, 81.3, 89.6, 98.2, 106.2, -11.75, -23.5, -35.25, -47.0
+ ],
+ STAR_MELEE_VALUES:[
+ 0.0, 9.4, 15.2, 21.0, 26.8, 32.6, 38.4, 44.2, 50.0, 55.8, 61.6, 67.4, 73.2, -8.5, -17, -25.5, -34
+ ],
+ DEFAULT_MODIFIERS:[
+ 0x4a, 0x86, 0x8e, 0x1c, 0xbe, 0xdc
+ ],
+ STARS:[
+ '-',
+ '☆',
+ '★',
+ '★☆',
+ '★★',
+ '★★☆',
+ '★★★',
+ '★★★☆',
+ '★★★★',
+ '★★★★☆',
+ '★★★★★',
+ '★★★★★☆',
+ '★★★★★★',
+ '-☆',
+ '-★',
+ '-★☆',
+ '-★★'
+ ],
+ STATS:[
+ /* BASIC */
+ 'Times played',
+ 'Total play time (in seconds)',
+ 'Total Solo play time (in seconds)',
+ 'Hearts acquired',
+ 'Weapons acquired',
+ 'Powers acquired',
+ 'UNKNOWN_1',
+ 'Enemies defeated',
+ 'Bosses defeated',
+ 'Ranged attacks',
+ 'Melee attacks',
+ 'Attacks evaded',
+ 'Knockback recoveries',
+ 'Shots narrowly avoided',
+ 'Special Attacks used',
+ 'Times finished',
+ 'Powers used',
+ 'Items used',
+ 'Times eggplanted',
+ 'Times tempuraed',
+ 'Centurions summoned',
+
+ /* SOLO */
+ 'Chapters cleared',
+ 'Total score',
+ 'Chapters cleared at max Intensity',
+ 'Avg. Intensity *FLOAT*',
+ 'Avg. Intensity for cleared chapters *FLOAT*',
+ 'Hearts bet in the Fiend\'s cauldron',
+ 'Hearts lost',
+ 'Most hearts acquired',
+ 'Most weapons acquired',
+ 'Most powers acquired',
+ 'Weapons purchased',
+ 'Weapons converted to hearts',
+ 'Hearts offered in the Vault',
+ 'UNKNOWN_2',
+ 'UNKNOWN_3',
+ 'UNKNOWN_4',
+ 'UNKNOWN_5',
+ 'Weapons fusions',
+ 'Treasure boxes opened',
+ 'Times pickpocketed',
+ 'Souflees defeated',
+ 'Rare Treasurefish defeated',
+ 'Exo Tank uses',
+ 'Aether Ring uses',
+ 'Cherubot uses',
+ 'Three Sacred Treasures uses',
+ 'Lightning Chariot uses',
+ 'Great Sacred Treasure uses',
+ 'Time playes as Magnus (in seconds)',
+ 'Time playes as Dark Pit (in seconds)',
+ 'Practice Range uses',
+
+ /* TOGETHER */
+ 'Nearby matches played',
+ 'Nearby time played (in seconds)',
+ 'Total Nearby participants',
+ 'Far Away matches played',
+ 'Total Far Away participants',
+ 'Time played With Friends',
+ 'Time played With Anyone',
+ 'Light vs. Dark matches played',
+ 'Light vs. Dark matches won',
+ 'Free-for-All matches played',
+ 'Free-for-All matches won',
+ 'Opponents defeated',
+ 'Matches suspended',
+ 'Times you became an angel',
+ 'Times you won as an angel',
+ 'Angels defeated',
+ 'Weapons rewarded',
+ 'Powers rewarded',
+ 'Hearts rewarded',
+
+ /* STREETPASS */
+ 'Weapon gems created',
+ 'Weapon-gem-exchange partners',
+ 'UNKNOWN_6',
+ 'Weapons fused from gems',
+ 'Hearts acquired by gems'
+ ],
+ WEAPON_TYPES:[
+ {name:'Blades', weapons:[
+ {id:0xfa2000,name:'First Blade'},
+ {id:0xf9a880,name:'Burst Blade'},
+ {id:0x5b2100,name:'Viper Blade'},
+ {id:0x7a6180,name:'Crusader Blade'},
+ {id:0x79e200,name:'Royal Blade'},
+ {id:0x84e280,name:'Optical Blade'},
+ {id:0x66e300,name:'Samurai Blade'},
+ {id:0x926380,name:'Bullet Blade'},
+ {id:0x9cec00,name:'Aquarius Blade'},
+ {id:0x88ec80,name:'Aurum Blade'},
+ {id:0x876500,name:'Palutena Blade'},
+ {id:0x94ed80,name:'Gaol Blade'}
+ ]},
+ {name:'Staves', weapons:[
+ {id:0x49c804,name:'Insight Staff'},
+ {id:0x7c4084,name:'Orb Staff'},
+ {id:0x4d4904,name:'Rose Staff'},
+ {id:0x684184,name:'Knuckle Staff'},
+ {id:0x944204,name:'Ancient Staff'},
+ {id:0x934284,name:'Lancer Staff'},
+ {id:0x93c304,name:'Flintlock Staff'},
+ {id:0x9bcb84,name:'Somewhat Staff'},
+ {id:0xf98c04,name:'Scorpio Staff'},
+ {id:0xbd8c84,name:'Laser Staff'},
+ {id:0x5a0504,name:'Dark Pit Staff'},
+ {id:0xfa0d84,name:'Thanatos Staff'}
+ ]},
+ {name:'Claws', weapons:[
+ {id:0x9f0888,name:'Tiger Claws'},
+ {id:0x9f0888,name:'Wolf Claws'},
+ {id:0xa30908,name:'Bear Claws'},
+ {id:0xa2c988,name:'Brawler Claws'},
+ {id:0x9e8a08,name:'Stealth Claws'},
+ {id:0x9e0a88,name:'Hedgehog Claws'},
+ {id:0x8d4b08,name:'Raptor Claws'},
+ {id:0x7f0388,name:'Artillery Claws'},
+ {id:0xf9cc08,name:'Cancer Claws'},
+ {id:0xd50c88,name:'Beam Claws'},
+ {id:0xa3cd08,name:'Viridi Claws'},
+ {id:0xa38c88,name:'Pandora Claws'}
+ ]},
+ {name:'Bows', weapons:[
+ {id:0xaf080c,name:'Fortune Bow'},
+ {id:0x81c08c,name:'Silver Bow'},
+ {id:0xf9c90c,name:'Meteor Bow'},
+ {id:0x96498c,name:'Divine Bow'},
+ {id:0x89ca0c,name:'Darkness Bow'},
+ {id:0xacca8c,name:'Crystal Bow'},
+ {id:0x95cb0c,name:'Angel Bow'},
+ {id:0xabcb8c,name:'Hawkeye Bow'},
+ {id:0xaf4c0c,name:'Sagittarius Bow'},
+ {id:0x4ccc8c,name:'Aurum Bow'},
+ {id:0x67c50c,name:'Palutena Bow'},
+ {id:0x50cd8c,name:'Phrosphora Bow'}
+ ]},
+ {name:'Palms', weapons:[
+ {id:0xfa0810,name:'Violet Palm'},
+ {id:0xf98890,name:'Burning Palm'},
+ {id:0x87c910,name:'Needle Palm'},
+ {id:0x914190,name:'Midnight Palm'},
+ {id:0xa9ca10,name:'Cursed Palm'},
+ {id:0xaf4a90,name:'Cutter Palm'},
+ {id:0x514310,name:'Pudgy Palm'},
+ {id:0xaa4b90,name:'Ninja Palm (Weeaboo Palm)'},
+ {id:0x674410,name:'Virgo Palm'},
+ {id:0x924490,name:'Aurum Palm'},
+ {id:0x99c510,name:'Viridi Palm'},
+ {id:0xaecd90,name:'Great Reaper Palm'}
+ ]},
+ {name:'Clubs', weapons:[
+ {id:0xa60814,name:'Ore Club'},
+ {id:0x9d8894,name:'Babel Club'},
+ {id:0x9e0914,name:'Skyscraper Club'},
+ {id:0x65c994,name:'Atlas Club'},
+ {id:0xf9c214,name:'Earthmaul Club'},
+ {id:0xa48A94,name:'Ogre Club'},
+ {id:0x884b14,name:'Halo Club'},
+ {id:0xa58b94,name:'Black Club'},
+ {id:0xa68c14,name:'Capricorn Club'},
+ {id:0x834494,name:'Aurum Club'},
+ {id:0x874514,name:'Hewdraw Club'},
+ {id:0xa50d94,name:'Magnus Club'}
+ ]},
+ {name:'Cannons', weapons:[
+ {id:0xaa4818,name:'EZ Cannon'},
+ {id:0xa1c098,name:'Ball Cannon'},
+ {id:0xf9c918,name:'Predator Cannon'},
+ {id:0x51c198,name:'Poseidon Cannon'},
+ {id:0xae8a18,name:'Fireworks Cannon'},
+ {id:0x4aca98,name:'Rail Cannon'},
+ {id:0xaecb18,name:'Dynamo Cannon'},
+ {id:0x634b98,name:'Doom Cannon'},
+ {id:0x9bc418,name:'Leo Cannon'},
+ {id:0x5b0498,name:'Sonic Cannon'},
+ {id:0x864518,name:'Twinbellows Cannon'},
+ {id:0x84c598,name:'Cragalanche Cannon'}
+ ]},
+ {name:'Orbitars', weapons:[
+ {id:0xfa081c,name:'Standard Orbitars'},
+ {id:0x85809c,name:'Guardian Orbitars'},
+ {id:0x53a91c,name:'Shock Orbitars'},
+ {id:0x4d899c,name:'Eyetrack Orbitars'},
+ {id:0x534a1c,name:'Fairy Orbitars'},
+ {id:0x68829c,name:'Paw Pad Orbitars'},
+ {id:0x7f831c,name:'Jetstream Orbitars'},
+ {id:0x69039c,name:'Boom Orbitars'},
+ {id:0x898c1c,name:'Gemini Orbitars'},
+ {id:0x7e049c,name:'Aurum Orbitars'},
+ {id:0x7e851c,name:'Centurion Orbitars'},
+ {id:0xf98d9c,name:'Arlon Orbitars'}
+ ]},
+ {name:'Arms', weapons:[
+ {id:0x9a4020,name:'Crusher Arm'},
+ {id:0x8b48a0,name:'Compact Arm'},
+ {id:0xf9c920,name:'Electroshock Arm'},
+ {id:0xa949a0,name:'Volcano Arm'},
+ {id:0x484a20,name:'Drill Arm'},
+ {id:0x914aa0,name:'Bomber Arm'},
+ {id:0x478b20,name:'Bowl Arm'},
+ {id:0xa98ba0,name:'End-All Arm'},
+ {id:0x79c420,name:'Taurus Arm'},
+ {id:0x8044a0,name:'Upperdash Arm'},
+ {id:0x844520,name:'Kraken Arm'},
+ {id:0x83c5a0,name:'Phoenix Arm'}
+ ]}
+ ]
+ },
+ Offsets:{
+ TREASURE_HUNT: 0x0c,
+ CURRENT_HEARTS: 0x01e8,
+ HEARTS_OFFERED_TO_PALUTENA: 0x01ec,
+ HEARTS_OFFERED_TO_VIRIDI: 0x01f0,
+ TROPHIES: 0x046c,
+ WEAPONS: 0x0670,
+ WEAPONS_TYPE: 0x05,
+ WEAPONS_STARS1: 0x08,
+ WEAPONS_STARS2: 0x0a,
+ WEAPONS_MODIFIERS: 0x14,
+ LEVEL_ENEMIES_DEFEATED: 0x8370,
+ LEVEL_SCORE: 0x010068,
+ LEVEL_INTENSITY: 0x0100ec,
+ STATS: 0x0101b8,
+ },
+
+ /* private functions */
+ _checkIfMissingAnyUnreleasedTrophy:function(){
+ var missing=false;
+ for(var i=404; i<412 && !missing; i++){
+ if(tempFile.readByte(this.Offsets.TROPHIES+i)==0){
+ missing=true;
+ }
+ }
+ return missing
+ },
+ _disableUnlockUnreleasedTrophiesButton:function(){
+ get('button-unlock-trophies').disabled=true;
+ get('button-unlock-trophies').value='OK!';
+ },
+ _getWeaponOffset:function(){
+ return this.Offsets.WEAPONS+currentWeapon*this.Constants.WEAPON_SIZE
+ },
+ _readWeapon:function(i){
+ currentWeapon=i;
+ var offset=this._getWeaponOffset();
+
+ var weaponType=(tempFile.readByte(offset+0x05)<<16)+(tempFile.readByte(offset+0x06)<<8)+tempFile.readByte(offset+0x07);
+ get('weapon-unknown').innerHTML='0x'+weaponType.toString(16);
+ get('weapon-unknown').value=weaponType;
+
+ get('select-weapon-type').value=weaponType;
+
+ var starsRanged=tempFile.readShort(offset+0x08);
+ var starsMelee=tempFile.readShort(offset+0x0a);
+ if((starsRanged>=0x11 && starsRanged<=0x16) && starsMelee==0x00){ /* unknown fix for some weapons? */
+ starsMelee=starsRanged;
+ starsRanged=0;
+ }else if((starsRanged>=0x17 && starsRanged<=0x17) && starsMelee==0x00){ /* unknown fix for some weapons? */
+ starsMelee=starsRanged-0x06;
+ starsRanged=starsRanged-0x16;
+ }
+ get('select-weapon-stars-ranged').value=starsRanged;
+ get('select-weapon-stars-melee').value=starsMelee;
+
+ for(var i=0; i<6; i++){
+ get('select-weapon-modifier'+i).value=tempFile.readShort(offset+0x14+i*2);
+ }
+
+ this._calculateWeaponValue();
+ },
+ _writeWeapon:function(){
+ var offset=SavegameEditor._getWeaponOffset();
+
+ var weaponType=parseInt(getValue('weapon-type'));
+ tempFile.writeInt(offset+0x05, (weaponType & 0xff0000) >> 16);
+ tempFile.writeInt(offset+0x06, (weaponType & 0x00ff00) >> 8);
+ tempFile.writeInt(offset+0x07, (weaponType & 0x0000ff) >> 0);
+
+ tempFile.writeShort(offset+0x08, getValue('weapon-stars-ranged'));
+ tempFile.writeShort(offset+0x0a, getValue('weapon-stars-melee'));
+
+ for(var i=0; i<6; i++)
+ tempFile.writeShort(offset+0x14+i*2, getValue('weapon-modifier'+i));
+
+ SavegameEditor._calculateWeaponValue();
+ },
+ _calculateWeaponValue:function(){
+ var val=100;
+ for(var i=0; i<6; i++){
+ val+=this.Constants.MODIFIERS_VALUES[get('select-weapon-modifier'+i).value];
+ }
+ val+=this.Constants.STAR_RANGED_VALUES[get('select-weapon-stars-ranged').selectedIndex];
+ val+=this.Constants.STAR_MELEE_VALUES[get('select-weapon-stars-melee').selectedIndex];
+
+ //val=parseInt(val);
+ val=Math.ceil(val);
+ if(val<351){
+ get('weapon-value').style.color='initial';
+ get('weapon-value').innerHTML=val;
+ }else{
+ get('weapon-value').style.color='red';
+ get('weapon-value').innerHTML=val+' (invalid weapon!)';
+ }
+ },
+
+ /* check if savegame is valid */
+ checkValidSavegame:function(){
+ return (tempFile.fileSize==66296)
+ },
+
+
+ /* preload function */
+ preload:function(){
+ setNumericRange('hearts', 0, 9999999);
+ setNumericRange('hearts-for-palutena', 0, 9999999);
+ setNumericRange('hearts-for-viridi', 0, 9999999);
+ },
+
+
+ /* load function */
+ load:function(){
+ tempFile.littleEndian=true;
+
+ setValue('hearts', tempFile.readInt(this.Offsets.CURRENT_HEARTS));
+ setValue('hearts-for-palutena', tempFile.readInt(this.Offsets.HEARTS_OFFERED_TO_PALUTENA));
+ setValue('hearts-for-viridi', tempFile.readInt(this.Offsets.HEARTS_OFFERED_TO_VIRIDI));
+
+ if(!this._checkIfMissingAnyUnreleasedTrophy())
+ this._disableUnlockUnreleasedTrophiesButton();
+
+ /* STATS */
+ for(var i=0; i
+
+
+ Savegame Editor – Picross 3D: Round 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Amiibo puzzles
+
+ You have unlocked /9 amiibo puzzles.
+
+
+
+
+
+
+
diff --git a/picross-3d-round-2/picross-3d-round-2.js b/picross-3d-round-2/picross-3d-round-2.js
new file mode 100644
index 0000000..aedb617
--- /dev/null
+++ b/picross-3d-round-2/picross-3d-round-2.js
@@ -0,0 +1,45 @@
+/*
+ Picross 3D round 2 for HTML5 Save Editor v20160704
+ by Marc Robledo 2016
+*/
+
+SavegameEditor={
+ Name:'Picross 3D: round 2',
+ Filename:'SAVEDATA',
+
+ AmiiboOffset:0x1a4c,
+
+ unlockAmiiboPuzzles:function(){
+ for(var i=0; i<9; i++){
+ var offset=this.AmiiboOffset+i*16;
+ var b=tempFile.readByte(offset);
+ if(!(b & 0x09)){
+ tempFile.writeByte(offset, b+0x09);
+ }
+ }
+ setValue('amiibocount', 9);
+ },
+
+ /* check if savegame is valid */
+ checkValidSavegame:function(){
+ return (tempFile.fileSize==45688)
+ },
+
+ /* load function */
+ load:function(){
+ tempFile.fileName='SAVEDATA';
+
+ var unlockedAmiibos=0;
+ for(var i=0; i<9; i++){
+ if(tempFile.readByte(this.AmiiboOffset+i*16) & 0x09){
+ unlockedAmiibos++;
+ }
+ }
+ setValue('amiibocount', unlockedAmiibos);
+ },
+
+
+ /* save function */
+ save:function(){
+ }
+}
\ No newline at end of file
diff --git a/picross-3d-round-2/savegame-editor.appcache b/picross-3d-round-2/savegame-editor.appcache
new file mode 100644
index 0000000..8deb160
--- /dev/null
+++ b/picross-3d-round-2/savegame-editor.appcache
@@ -0,0 +1,12 @@
+CACHE MANIFEST
+# last update 2017-07-06
+#CACHE:
+index.html
+favicon.png
+picross-3d-round-2.js
+../savegame-editor.css
+../savegame-editor.js
+
+# force these files to be loaded in network
+NETWORK:
+*
\ No newline at end of file
diff --git a/picross-3d-round-2/thumb.jpg b/picross-3d-round-2/thumb.jpg
new file mode 100644
index 0000000..0ea29da
Binary files /dev/null and b/picross-3d-round-2/thumb.jpg differ
diff --git a/pokemon-picross/all.dat b/pokemon-picross/all.dat
new file mode 100644
index 0000000..fea26c7
Binary files /dev/null and b/pokemon-picross/all.dat differ
diff --git a/pokemon-picross/favicon.png b/pokemon-picross/favicon.png
new file mode 100644
index 0000000..fcf1171
Binary files /dev/null and b/pokemon-picross/favicon.png differ
diff --git a/pokemon-picross/index.html b/pokemon-picross/index.html
new file mode 100644
index 0000000..4306959
--- /dev/null
+++ b/pokemon-picross/index.html
@@ -0,0 +1,54 @@
+
+
+
+ Savegame Editor – Pokémon Picross
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Picrites
+
+
+
+
(Note: if you buy 5000 picrites, you have access to unlimited picrites in-game)
+
+
+
+
+
+
+
diff --git a/pokemon-picross/pokemon-picross.js b/pokemon-picross/pokemon-picross.js
new file mode 100644
index 0000000..4b7687e
--- /dev/null
+++ b/pokemon-picross/pokemon-picross.js
@@ -0,0 +1,44 @@
+/*
+ Pokémon Picross for HTML5 Save Editor v20170706
+ by Marc Robledo 2016-2017
+*/
+
+SavegameEditor={
+ Name:'Pokémon Picross',
+ Filename:'all.dat',
+
+ Offsets:{
+ PICRITES:0x0b40,
+ BOUGHTPICRITES:0x0b44,
+ PENDINGPICRITES:0x0b48, /* if there is an error after buying, they are queued here */
+ UNLOCKEDSHOPFLAG:0x0b4c,
+ },
+
+ /* check if savegame is valid */
+ checkValidSavegame:function(){
+ return (tempFile.fileSize==14920)
+ },
+
+ /* preload function */
+ preload:function(){
+ setNumericRange('picrites', 0, 9999);
+ setNumericRange('boughtpicrites', 0, 5000);
+ },
+
+ /* load function */
+ load:function(){
+ tempFile.fileName='all.dat';
+
+ setValue('picrites', tempFile.readShort(this.Offsets.PICRITES));
+ setValue('boughtpicrites', tempFile.readShort(this.Offsets.BOUGHTPICRITES));
+ },
+
+ /* save function */
+ save:function(){
+ tempFile.writeShort(this.Offsets.PICRITES, getValue('picrites'));
+ var boughtPicrites=getValue('boughtpicrites');
+ tempFile.writeShort(this.Offsets.BOUGHTPICRITES, boughtPicrites);
+ var unlockedShopByte=tempFile.readByte(this.Offsets.UNLOCKEDSHOPFLAG) & ~0x01;
+ tempFile.writeByte(this.Offsets.UNLOCKEDSHOPFLAG, unlockedShopByte+(boughtPicrites>=5000)?0x01:0x00);
+ }
+}
\ No newline at end of file
diff --git a/pokemon-picross/savegame-editor.appcache b/pokemon-picross/savegame-editor.appcache
new file mode 100644
index 0000000..3685e6b
--- /dev/null
+++ b/pokemon-picross/savegame-editor.appcache
@@ -0,0 +1,12 @@
+CACHE MANIFEST
+# last update 2017-07-06
+#CACHE:
+index.html
+favicon.png
+pokemon-picross.js
+../savegame-editor.css
+../savegame-editor.js
+
+# force these files to be loaded in network
+NETWORK:
+*
\ No newline at end of file
diff --git a/pokemon-picross/thumb.jpg b/pokemon-picross/thumb.jpg
new file mode 100644
index 0000000..c1552fa
Binary files /dev/null and b/pokemon-picross/thumb.jpg differ
diff --git a/pokemon-shuffle/favicon.png b/pokemon-shuffle/favicon.png
new file mode 100644
index 0000000..9a187eb
Binary files /dev/null and b/pokemon-shuffle/favicon.png differ
diff --git a/pokemon-shuffle/index.html b/pokemon-shuffle/index.html
new file mode 100644
index 0000000..262289a
--- /dev/null
+++ b/pokemon-shuffle/index.html
@@ -0,0 +1,131 @@
+
+
+
+ Savegame Editor – Pokémon Shuffle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Consumables
+
+
+
+
+
+
+
+
+
+
+
Items
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Enhancements
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Other
+
+
+
+
+
+
+
+
+
+
diff --git a/pokemon-shuffle/pokemon-shuffle.js b/pokemon-shuffle/pokemon-shuffle.js
new file mode 100644
index 0000000..5c69c97
--- /dev/null
+++ b/pokemon-shuffle/pokemon-shuffle.js
@@ -0,0 +1,155 @@
+/*
+ Pokemon Shuffle for HTML5 Save Editor v20170706
+ by Marc Robledo 2016
+*/
+
+SavegameEditor={
+ Name:'Pokémon Shuffle',
+ Filename:'savedata.bin',
+ Offsets:{
+ Coins:{
+ ADDRESS: 0x68,
+ NBYTES: 4,
+ BITOFFSET: 3,
+ NBITS: 17,
+ },
+
+ Jewels:{
+ ADDRESS: 0x6a,
+ NBYTES: 2,
+ BITOFFSET: 4,
+ NBITS: 8,
+ },
+
+ Hearts:{
+ ADDRESS: 0x2d4a,
+ NBYTES: 2,
+ BITOFFSET: 7,
+ NBITS: 7,
+ },
+
+ Items:{
+ ADDRESS: 0xd0,
+ NBYTES: 2,
+ BITOFFSET: 7,
+ NBITS: 7,
+ },
+
+ Enhancements:{
+ ADDRESS: 0x2d4c,
+ NBYTES: 1,
+ BITOFFSET: 1,
+ NBITS: 7,
+ },
+
+ CurrentScalationLevel:{
+ ADDRESS: 0x2d59,
+ NBYTES: 2,
+ BITOFFSET: 2,
+ NBITS: 10,
+ }
+ },
+
+ /* private functions */
+ _readBytes(address, numBytes){
+ var num;
+ if(numBytes==4){
+ num=tempFile.readInt(address);
+ }else if(numBytes==2){
+ num=tempFile.readShort(address);
+ }else{
+ num=tempFile.readByte(address);
+ }
+ return num;
+ },
+ _readVariable(v,addOffset){
+ var num=this._readBytes(v.ADDRESS+addOffset, v.NBYTES);
+ num=num >> v.BITOFFSET;
+
+ return num & (Math.pow(2,v.NBITS)-1);
+ },
+ _storeVariable(v,addOffset,newValInput){
+ /* << to shift mask, ~ to bitwise, >>> 0 forces unsigned values */
+ var inverseMask=~((Math.pow(2,v.NBITS)-1) << v.BITOFFSET) >>> 0;
+ var originalBytes=this._readBytes(v.ADDRESS+addOffset, v.NBYTES);
+
+ var newValue=(originalBytes & inverseMask) + (parseInt(newValInput) << v.BITOFFSET) >>> 0;
+
+ if(v.NBYTES==4){
+ tempFile.writeInt(v.ADDRESS+addOffset, newValue);
+ }else if(v.NBYTES==2){
+ tempFile.writeShort(v.ADDRESS+addOffset, newValue);
+ }else{
+ tempFile.writeByte(v.ADDRESS+addOffset, newValue);
+ }
+ },
+
+ /* check if savegame is valid */
+ checkValidSavegame:function(){
+ return (tempFile.fileSize==42039 || tempFile.fileSize==74807)
+ },
+
+
+ /* preload function */
+ preload:function(){
+ setNumericRange('coins', 0, 99999);
+ setNumericRange('jewels', 0, 150);
+ setNumericRange('hearts', 0, 99);
+ setNumericRange('scalationlvl', 1, 999);
+
+ for(var i=0; i<7; i++)
+ setNumericRange('item'+i, 0, 99);
+
+ var maxEnhancements;
+ if(tempFile.fileSize==42039)
+ maxEnhancements=1;
+ else if(tempFile.fileSize==74807)
+ maxEnhancements=10;
+ for(var i=0; i
+
+
+ Savegame Editor – Rhythm Paradise/Heaven Megamix
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Basic
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/rhythm-paradise-megamix/rhythm-paradise-megamix.js b/rhythm-paradise-megamix/rhythm-paradise-megamix.js
new file mode 100644
index 0000000..be1f9ed
--- /dev/null
+++ b/rhythm-paradise-megamix/rhythm-paradise-megamix.js
@@ -0,0 +1,54 @@
+/*
+ Rhythm Paradise Megamix for HTML5 Save Editor v20170104
+ by Marc Robledo 2017
+*/
+
+SavegameEditor={
+ Name:'Rhythm Heaven/Paradise Megamix',
+ Filename:'savedataArc.txt',
+
+ Offsets:{
+ COINS:0x2dbc,
+ FLOWBALLS:0x2dbe,
+ ONIONS1:0x3006,
+ ONIONS2:0x3007,
+ ONIONS3:0x3008
+ },
+
+ /* check if savegame is valid */
+ checkValidSavegame:function(){
+ return (tempFile.fileSize==30040)
+ },
+
+
+ /* preload function */
+ preload:function(){
+ setNumericRange('coins', 0, 9999);
+ setNumericRange('flowballs', 0, 255);
+ setNumericRange('onions1', 0, 255);
+ setNumericRange('onions2', 0, 255);
+ setNumericRange('onions3', 0, 255);
+ },
+
+ /* load function */
+ load:function(){
+ tempFile.littleEndian=true;
+ tempFile.fileName='savedataArc.txt';
+
+ setValue('coins', tempFile.readShort(this.Offsets.COINS), 0, 9999);
+ setValue('flowballs', tempFile.readShort(this.Offsets.FLOWBALLS), 0, 255);
+ setValue('onions1', tempFile.readByte(this.Offsets.ONIONS1), 0, 255);
+ setValue('onions2', tempFile.readByte(this.Offsets.ONIONS2), 0, 255);
+ setValue('onions3', tempFile.readByte(this.Offsets.ONIONS3), 0, 255);
+ },
+
+
+ /* save function */
+ save:function(){
+ tempFile.writeShort(this.Offsets.COINS, getValue('coins'));
+ tempFile.writeShort(this.Offsets.FLOWBALLS, getValue('flowballs'));
+ tempFile.writeByte(this.Offsets.ONIONS1, getValue('onions1'));
+ tempFile.writeByte(this.Offsets.ONIONS2, getValue('onions2'));
+ tempFile.writeByte(this.Offsets.ONIONS3, getValue('onions3'));
+ }
+}
\ No newline at end of file
diff --git a/rhythm-paradise-megamix/savedataArc.txt b/rhythm-paradise-megamix/savedataArc.txt
new file mode 100644
index 0000000..e8d3fd9
Binary files /dev/null and b/rhythm-paradise-megamix/savedataArc.txt differ
diff --git a/rhythm-paradise-megamix/savegame-editor.appcache b/rhythm-paradise-megamix/savegame-editor.appcache
new file mode 100644
index 0000000..38cb51d
--- /dev/null
+++ b/rhythm-paradise-megamix/savegame-editor.appcache
@@ -0,0 +1,12 @@
+CACHE MANIFEST
+# last update 2017-07-06
+#CACHE:
+index.html
+favicon.png
+rhythm-paradise-megamix.js
+../savegame-editor.css
+../savegame-editor.js
+
+# force these files to be loaded in network
+NETWORK:
+*
\ No newline at end of file
diff --git a/rhythm-paradise-megamix/thumb.jpg b/rhythm-paradise-megamix/thumb.jpg
new file mode 100644
index 0000000..99050b7
Binary files /dev/null and b/rhythm-paradise-megamix/thumb.jpg differ
diff --git a/streetpass-mii-plaza/favicon.png b/streetpass-mii-plaza/favicon.png
new file mode 100644
index 0000000..d1b784d
Binary files /dev/null and b/streetpass-mii-plaza/favicon.png differ
diff --git a/streetpass-mii-plaza/index.html b/streetpass-mii-plaza/index.html
new file mode 100644
index 0000000..d914507
--- /dev/null
+++ b/streetpass-mii-plaza/index.html
@@ -0,0 +1,90 @@
+
+
+
+ Savegame Editor – StreetPass Mii Plaza
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Basic
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Unlock DLC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Puzzle Swap
+
+
+ Pieces:
+
+
+
+
+
+
+
+
+
diff --git a/streetpass-mii-plaza/meet.dat b/streetpass-mii-plaza/meet.dat
new file mode 100644
index 0000000..6db5917
Binary files /dev/null and b/streetpass-mii-plaza/meet.dat differ
diff --git a/streetpass-mii-plaza/savegame-editor.appcache b/streetpass-mii-plaza/savegame-editor.appcache
new file mode 100644
index 0000000..ac013f9
--- /dev/null
+++ b/streetpass-mii-plaza/savegame-editor.appcache
@@ -0,0 +1,12 @@
+CACHE MANIFEST
+# last update 2017-07-06
+#CACHE:
+index.html
+favicon.png
+streetpass-mii-plaza.js
+../savegame-editor.css
+../savegame-editor.js
+
+# force these files to be loaded in network
+NETWORK:
+*
\ No newline at end of file
diff --git a/streetpass-mii-plaza/streetpass-mii-plaza.js b/streetpass-mii-plaza/streetpass-mii-plaza.js
new file mode 100644
index 0000000..b4eaa09
--- /dev/null
+++ b/streetpass-mii-plaza/streetpass-mii-plaza.js
@@ -0,0 +1,306 @@
+/*
+ Streetpass Mii Plaza for HTML5 Save Editor v20170706
+ by Marc Robledo 2016-2017
+*/
+
+SavegameEditor={
+ Name:'Streetpass Mii Plaza',
+ Filename:'meet.dat',
+
+ /* Constants */
+ Constants:{
+ ALL_SPEECH_BUBBLES:[0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff],
+ ALL_SPEECH_BUBBLES2:[0xf8],
+ ALL_HATS2:[0xef,0xfb,0xff,0xff,0xff,0xff,0xff,0xff],
+ ALL_HATS3:[0xff,0xff,0xff,0x7f,0x00,0xfe,0x3f,0xfc,0x01],
+
+ HATS_GAMES:[
+ //Battleground Z?
+ //Mii Force?
+ //Flower Town?
+ //Warrior's Way?
+ //Market Crashers?
+ //Ninja Launcher?
+
+ [0x05b348, 0xc0],
+ [0x05b348, 0x30],
+ [0x05b348, 0x0c],
+ [0x05b348, 0x03],
+ [0x05b34a, 0xc0], //Monster Manor
+ [0x05b34b, 0x03], //Ultimate Angler
+ [0x05b34c, 0x06], //Slot Car Rivals
+ [0x05b34c, 0x18],
+ [0x05b34c, 0x60], //Feed Mii
+ [0x05b34c, 0x80, 0x05b34d,0x01], //Mii Trek
+ [0x05b34d, 0x06]
+ ],
+
+ NO_PIECES_15:[0x00,0x00],
+ NO_PIECES_SPOTPASS_15:[0x00,0x00],
+ NO_PIECES_SPOTPASS_24:[0x00,0x00,0x00],
+ NO_PIECES_SPOTPASS_40:[0x00,0x00,0x00,0x00,0x00],
+ MOST_PIECES_15:[0xff,0x3f],
+ MOST_PIECES_SPOTPASS_15:[0xff,0xfc],
+ MOST_PIECES_SPOTPASS_24:[0xff,0xff,0xfe],
+ MOST_PIECES_SPOTPASS_40:[0xff,0xff,0xff,0xff,0xfe],
+ ALL_PIECES_15:[0xff,0x7f],
+ ALL_PIECES_SPOTPASS_15:[0xff,0xfe],
+ ALL_PIECES_SPOTPASS_24:[0xff,0xff,0xff],
+ ALL_PIECES_SPOTPASS_40:[0xff,0xff,0xff,0xff,0xff],
+
+
+ PANELS:[
+ {Size:15,Name:'Metroid: Other M'},
+ {Size:15,Name:'Mario and Bowser'},
+ {Size:15,Name:'Super Mario Galaxy 2'},
+ {Size:15,Name:'The Legend of Zelda'},
+ {Size:15,Name:'Kirby\'s Dream Land'},
+ {Size:15,Name:'Pikmin'},
+ {Size:15,Name:'New Super Mario Bros. Wii'},
+ {Size:24,Name:'The Legend of Zelda: Ocarina of Time 3D'},
+ {Size:24,Name:'Star Fox 64 3D'},
+ {Size:40,Name:'Super Mario 3D Land'},
+ {Size:40,Name:'Mario Kart 7'},
+ {Size:24,Name:'Rhythm Heaven Fever'},
+ {Size:24,Name:'Donkey Kong Country Returns'},
+ {Size:24,Name:'Pilotwings Resort'},
+ {Size:40,Name:'Kid Icarus: Uprising'},
+ {Size:40,Name:'Fire Emblem Awakening'},
+ {Size:40,Name:'Mario Tennis Open'},
+ {Size:40,Name:'Kirby\'s 20th Anniversary'},
+ {Size:24,Name:'Brain Age: Concentration Training'},
+ {Size:15,Name:'All Nippon Airways*'},
+ {Size:15,Name:'Mac de DS Big Mac*'},
+ {Size:40,Name:'New Super Mario Bros. 2'},
+ {Size:40,Name:'Kirby\'s Return to Dream Land'},
+ {Size:40,Name:'Animal Crossing: New Leaf'},
+ {Size:40,Name:'Luigi\'s Mansion: Dark Moon'},
+ {Size:40,Name:'Dillon\'s Rolling Western: The Last Ranger'},
+ {Size:40,Name:'Nintendo Starlets'},
+ {Size:40,Name:'Xenoblade Chronicles'},
+ {Size:40,Name:'New SUPER MARIO BROS. U + New SUPER LUIGI U'},
+ {Size:40,Name:'The Legend of Zelda: Skyward Sword'},
+ {Size:40,Name:'Mario & Luigi: Dream Team'},
+ {Size:40,Name:'Chibi-Robo! Photo Finder'},
+ {Size:24,Name:'Darumeshi Sports Store*'},
+ {Size:40,Name:'Pokémon X and Pokémon Y'},
+ {Size:40,Name:'MONSTER HUNTER'},
+ {Size:40,Name:'Kirby: Triple Deluxe'},
+ {Size:40,Name:'SUPER MARIO 3D WORLD'},
+ {Size:40,Name:'YOSHI\'S New ISLAND'},
+ {Size:24,Name:'Rusty\'s Real Deal Baseball'},
+ {Size:24,Name:'Dalgu ne seupocheu yagu pyeon*'},
+ {Size:15,Name:'Nintendo Pocket Football Club'},
+ {Size:40,Name:'Mega Man'},
+ {Size:24,Name:'Kirby Fighters Deluxe/DeDeDe\'s Drum Dash Deluxe'},
+ {Size:40,Name:'Daigasso! Band Brothers P*'},
+ {Size:40,Name:'FANTASY LIFE'},
+ {Size:15,Name:'PIKMIN Short Movies 3D: The Night Juicer'},
+ {Size:15,Name:'PIKMIN Short Movies 3D: Treasure in a Bottle'},
+ {Size:15,Name:'PIKMIN Short Movies 3D: Occupational Hazards'},
+ {Size:40,Name:'Sonic Boom'},
+ {Size:40,Name:'Captain Toad: Treasure Tracker'},
+ {Size:40,Name:'ULTIMATE NES REMIX'},
+ {Size:40,Name:'Super Smash Bros. for 3DS / Wii U'},
+ {Size:40,Name:'MONSTER HUNTER'},
+ {Size:24,Name:'Tomodachi Life Friendship Fiesta'},
+ {Size:15,Name:'Picross 3D Round 2'},
+ {Size:24,Name:'Mario & Happy*'},
+ {Size:40,Name:'YO-KAI WATCH'},
+ {Size:15,Name:'Mario & Luigi: Paper Jam'},
+ {Size:40,Name:'Animal Crossing: Happy Home Designer'},
+ {Size:40,Name:'FINAL FANTASY EXPLORERS'},
+ {Size:15,Name:'Kirby: Planet Robobot'},
+ {Size:15,Name:'Culdcept Revolt'},
+ {Size:15,Name:'METROID PRIME FEDERATION FORCE'}
+ ]
+ },
+ Offsets:{
+ STREETPASS_TAGS: 0x043e70,
+ PANELS: 0x044bdc,
+ PANEL_SIZE: 0x02,
+ SPOTPASS_PANELS: 0x045578,
+ SPOTPASS_PANEL_SIZE: 0x44,
+ ACCOMPLISHMENTS: 0x04555a,
+ SHOP_UNLOCKED: 0x05b358,
+ TICKETS: 0x05b366,
+ FANTASTIC_RATINGS: 0x05b4d6,
+ SPEECH_BUBBLES: 0x05bfe9,
+ SPEECH_BUBBLES2: 0x05cec6,
+ HATS2: 0x05b314,
+ HATS3: 0x05b344
+ },
+
+ /* private functions */
+ _getPanelOffset:function(){
+ var panelOffset,panelSize,panelId;
+ if(get('select-panel').selectedIndex<=6){
+ panelOffset=SavegameEditor.Offsets.PANELS;
+ panelSize=SavegameEditor.Offsets.PANEL_SIZE;
+ panelId=getValue('panel');
+ }else{
+ panelOffset=SavegameEditor.Offsets.SPOTPASS_PANELS;
+ panelSize=SavegameEditor.Offsets.SPOTPASS_PANEL_SIZE;
+ panelId=getValue('panel')-7;
+ }
+
+ return panelOffset+parseInt(panelId)*panelSize;
+ },
+ _countCurrentPanelPieces:function(){
+ var panelSize=SavegameEditor.Constants.PANELS[getValue('panel')].Size;
+ var offset=SavegameEditor._getPanelOffset();
+
+
+ var usedBytes;
+ if(panelSize==15){
+ usedBytes=SavegameEditor.Constants.ALL_PIECES_SPOTPASS_15.length
+ }else if(panelSize==24){
+ usedBytes=SavegameEditor.Constants.ALL_PIECES_SPOTPASS_24.length
+ }else{
+ usedBytes=SavegameEditor.Constants.ALL_PIECES_SPOTPASS_40.length
+ }
+
+ var count=0;
+ for(var i=0; i=panelSize){
+ color='red';
+ }else{
+ color='initial';
+ }
+
+ setValue('pieces',count);
+ getField('pieces').style.color=color;
+
+ },
+ _setPiecesFromCurrentPanel:function(status){
+ var arrayStr;
+ if(status===false){
+ arrayStr='NO_PIECES_';
+ }else if(status===-1){
+ arrayStr='MOST_PIECES_';
+ }else{
+ arrayStr='ALL_PIECES_';
+ }
+ if(get('select-panel').selectedIndex>=7){
+ arrayStr+='SPOTPASS_';
+ }
+ arrayStr+=SavegameEditor.Constants.PANELS[parseInt(getValue('panel'))].Size;
+
+ tempFile.writeBytes(SavegameEditor._getPanelOffset(), SavegameEditor.Constants[arrayStr]);
+
+ SavegameEditor._countCurrentPanelPieces();
+ },
+ _unlockTicketShop:function(){
+ var originalByte=tempFile.readByte(this.Offsets.SHOP_UNLOCKED);
+ if(!(originalByte & 0x01)){
+ tempFile.writeByte(this.Offsets.SHOP_UNLOCKED, originalByte+0x01);
+ getField('button-unlockticketshop').disabled=true;
+ MarcDialogs.alert('Ticket shop is open now.');
+ }
+ },
+ _unlockSpeechBubbles:function(){
+ tempFile.writeBytes(this.Offsets.SPEECH_BUBBLES, this.Constants.ALL_SPEECH_BUBBLES);
+ getField('button-unlockspeechbubbles').disabled=true;
+ MarcDialogs.alert('Speech bubbles 1-16 were unlocked.');
+ },
+ _unlockSpeechBubbles2:function(){
+ tempFile.writeBytes(this.Offsets.SPEECH_BUBBLES2, this.Constants.ALL_SPEECH_BUBBLES2);
+ getField('button-unlockspeechbubbles2').disabled=true;
+ MarcDialogs.alert('Speech bubbles 17-22 were unlocked.');
+ },
+ _unlockHats2:function(){
+ tempFile.writeBytes(this.Offsets.HATS2, this.Constants.ALL_HATS2);
+ getField('button-unlockhats2').disabled=true;
+ MarcDialogs.alert('All hats (pack 2) were unlocked.');
+ },
+ _unlockHats3:function(){
+ tempFile.writeBytes(this.Offsets.HATS3, this.Constants.ALL_HATS3);
+ getField('button-unlockhats3').disabled=true;
+ MarcDialogs.alert('All hats (pack 3) were unlocked.');
+ },
+ _unlockHatsGame:function(i){
+ for(var j=0; j
+
+
+ Savegame Editor – Team Kirby Clash Deluxe
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Profile
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Apple gems
+
+
+
+
+
+
+
+
+
+
Crystal shards
+
+
+
+
+
+
diff --git a/team-kirby-clash-dx/savedata.dat b/team-kirby-clash-dx/savedata.dat
new file mode 100644
index 0000000..4962c4b
Binary files /dev/null and b/team-kirby-clash-dx/savedata.dat differ
diff --git a/team-kirby-clash-dx/savegame-editor.appcache b/team-kirby-clash-dx/savegame-editor.appcache
new file mode 100644
index 0000000..2eb7741
--- /dev/null
+++ b/team-kirby-clash-dx/savegame-editor.appcache
@@ -0,0 +1,12 @@
+CACHE MANIFEST
+# last update 2017-07-06
+#CACHE:
+index.html
+favicon.png
+team-kirby-clash-dx.js
+../savegame-editor.css
+../savegame-editor.js
+
+# force these files to be loaded in network
+NETWORK:
+*
\ No newline at end of file
diff --git a/team-kirby-clash-dx/team-kirby-clash-dx.js b/team-kirby-clash-dx/team-kirby-clash-dx.js
new file mode 100644
index 0000000..742c2b0
--- /dev/null
+++ b/team-kirby-clash-dx/team-kirby-clash-dx.js
@@ -0,0 +1,82 @@
+/*
+ Team Kirby Clash Deluxe savegame editor v20170706
+ by Marc Robledo 2017
+*/
+
+SavegameEditor={
+ Name:'Team Kirby Clash Deluxe',
+ Filename:'savedata.dat',
+
+ /* Constants */
+ Offsets:{
+ APPLE_GEMS:0x199c,
+ BOUGHT_APPLE_GEMS:0x19b8,
+ SHARDS_RED:0x19bc,
+ SHARDS_BLUE:0x19c0,
+ SHARDS_YELLOW:0x19c4,
+ SHARDS_RARE:0x19c8,
+ PROFILE_NAME:0x1bb4,
+ PROFILE_PLAYED_TIME:0x1b74,
+ PROFILE_COMPLETED_MISSIONS:0x1b90,
+ PROFILE_MULTIPLAYER_BATTLES:0x1b94,
+ PROFILE_MULTIPLAYER_ENCOUNTERS:0x1b64
+ },
+
+ /* check if savegame is valid */
+ checkValidSavegame:function(){
+ return (tempFile.fileSize===8464)
+ },
+
+ /* preload function */
+ preload:function(){
+ setNumericRange('applegems', 0, 65535);
+ setNumericRange('boughtapplegems', 0, 3000);
+ setNumericRange('shards-red', 0, 999);
+ setNumericRange('shards-blue', 0, 999);
+ setNumericRange('shards-yellow', 0, 999);
+ setNumericRange('shards-rare', 0, 999);
+
+ setNumericRange('encounters', 0, 65535);
+ setNumericRange('multiplayerbattles', 0, 65535);
+ setNumericRange('time', 0, 0xffffffff);
+ setNumericRange('missions', 0, 0xffffffff);
+ },
+
+ /* load function */
+ load:function(){
+ tempFile.littleEndian=true;
+ tempFile.fileName='savedata.dat';
+
+ /* load data */
+ setValue('name', tempFile.readU16String(this.Offsets.PROFILE_NAME, 16));
+ setValue('time', tempFile.readInt(this.Offsets.PROFILE_PLAYED_TIME));
+ setValue('missions', tempFile.readInt(this.Offsets.PROFILE_COMPLETED_MISSIONS));
+ setValue('encounters', tempFile.readInt(this.Offsets.PROFILE_MULTIPLAYER_ENCOUNTERS));
+ setValue('multiplayerbattles', tempFile.readInt(this.Offsets.PROFILE_MULTIPLAYER_BATTLES));
+
+ setValue('applegems', tempFile.readShort(this.Offsets.APPLE_GEMS));
+ setValue('boughtapplegems', tempFile.readShort(this.Offsets.BOUGHT_APPLE_GEMS));
+
+ setValue('shards-red', tempFile.readShort(this.Offsets.SHARDS_RED));
+ setValue('shards-blue', tempFile.readShort(this.Offsets.SHARDS_BLUE));
+ setValue('shards-yellow', tempFile.readShort(this.Offsets.SHARDS_YELLOW));
+ setValue('shards-rare', tempFile.readShort(this.Offsets.SHARDS_RARE));
+ },
+
+ /* save function */
+ save:function(){
+ tempFile.writeU16String(this.Offsets.PROFILE_NAME, 16, getValue('name'));
+ tempFile.writeInt(this.Offsets.PROFILE_PLAYED_TIME, getValue('time'));
+ tempFile.writeInt(this.Offsets.PROFILE_COMPLETED_MISSIONS, getValue('missions'));
+ tempFile.writeInt(this.Offsets.PROFILE_MULTIPLAYER_ENCOUNTERS, getValue('encounters'));
+ tempFile.writeInt(this.Offsets.PROFILE_MULTIPLAYER_BATTLES, getValue('multiplayerbattles'));
+
+ tempFile.writeShort(this.Offsets.APPLE_GEMS, getValue('applegems'));
+ tempFile.writeShort(this.Offsets.BOUGHT_APPLE_GEMS, getValue('boughtapplegems'));
+
+ tempFile.writeShort(this.Offsets.SHARDS_RED, getValue('shards-red'));
+ tempFile.writeShort(this.Offsets.SHARDS_BLUE, getValue('shards-blue'));
+ tempFile.writeShort(this.Offsets.SHARDS_YELLOW, getValue('shards-yellow'));
+ tempFile.writeShort(this.Offsets.SHARDS_RARE, getValue('shards-rare'));
+ }
+}
\ No newline at end of file
diff --git a/team-kirby-clash-dx/thumb.jpg b/team-kirby-clash-dx/thumb.jpg
new file mode 100644
index 0000000..8fc9000
Binary files /dev/null and b/team-kirby-clash-dx/thumb.jpg differ