mirror of
https://github.com/marcrobledo/savegame-editors.git
synced 2025-10-06 00:12:46 +02:00
added smash bros ultimate and super kirby clash editors
This commit is contained in:
17
index.html
17
index.html
@@ -88,24 +88,27 @@ h6 a:hover{
|
||||
<div class="row">
|
||||
<a class="three columns game" href="/acnl-editor/"><img src="thumb.png" id="thumb-acnl" /><div>Animal Crossing: New Leaf <small>(Welcome amiibo!)</small></div></a>
|
||||
<a class="three columns game" href="zelda-botw/"><img src="thumb.png" id="thumb-zelda-botw" /><div>The legend of Zelda: Breath of the wild</div></a>
|
||||
<a class="three columns game" href="team-kirby-clash-dx/"><img src="thumb.png" id="thumb-team-kirby-clash-dx" /><div>Team Kirby Clash Deluxe</div></a>
|
||||
<a class="three columns game" href="super-kirby-clash/"><img src="thumb.png" id="thumb-super-kirby-clash" /><div>Super Kirby Clash <b>NEW!</b></div></a>
|
||||
</div>
|
||||
<div class="row">
|
||||
<a class="three columns game" href="kid-icarus-uprising/"><img src="thumb.png" id="thumb-kid-icarus-uprising" /><div>Kid Icarus: Uprising</div></a>
|
||||
<a class="three columns game" href="hyrule-warriors/"><img src="thumb.png" id="thumb-hyrule-warriors" /><div>Hyrule Warriors</div></a>
|
||||
<a class="three columns game" href="pokemon-shuffle/"><img src="thumb.png" id="thumb-pokemon-shuffle" /><div>Pokémon Shuffle</div></a>
|
||||
<a class="three columns game" href="smash-bros-ultimate/"><img src="thumb.png" id="thumb-smash-bros-ultimate" /><div>Super Smash Bros. Ultimate <b>NEW!</b></div></a>
|
||||
</div>
|
||||
<div class="row">
|
||||
<a class="four columns game" href="kirbys-blowout-blast/"><img src="thumb.png" id="thumb-kirbys-blowout-blast" /><div>Kirby's Blowout Blast</div></a>
|
||||
<a class="four columns game" href="picross-3d-round-2/"><img src="thumb.png" id="thumb-picross-3d-round-2" /><div>Picross 3D: Round 2</div></a>
|
||||
<a class="four columns game" href="pokemon-picross/"><img src="thumb.png" id="thumb-pokemon-picross" /><div>Pokémon Picross</div></a>
|
||||
<a class="four columns game" href="team-kirby-clash-dx/"><img src="thumb.png" id="thumb-team-kirby-clash-dx" /><div>Team Kirby Clash Deluxe</div></a>
|
||||
<a class="four columns game" href="pokemon-shuffle/"><img src="thumb.png" id="thumb-pokemon-shuffle" /><div>Pokémon Shuffle</div></a>
|
||||
<a class="four columns game" href="final-fantasy-explorers/"><img src="thumb.png" id="thumb-final-fantasy-explorers" /><div>Final Fantasy Explorers</div></a>
|
||||
<a class="four columns game" href="kirbys-blowout-blast/"><img src="thumb.png" id="thumb-kirbys-blowout-blast" /><div>Kirby's Blowout Blast</div></a>
|
||||
</div>
|
||||
<div class="row">
|
||||
<a class="four columns game" href="zelda-botw-master/"><img src="thumb.png" id="thumb-zelda-botw-master" /><div>The legend of Zelda: Breath of the wild (Master editor)</div></a>
|
||||
<a class="four columns game" href="pokemon-picross/"><img src="thumb.png" id="thumb-pokemon-picross" /><div>Pokémon Picross</div></a>
|
||||
<a class="four columns game" href="rhythm-paradise-megamix/"><img src="thumb.png" id="thumb-rhythm-paradise-megamix" /><div>Rhythm Paradise Megamix</div></a>
|
||||
<a class="four columns game" href="streetpass-mii-plaza/"><img src="thumb.png" id="thumb-streetpass-mii-plaza" /><div>StreetPass Mii Plaza</div></a>
|
||||
<a class="four columns game" href="mario-kart-7/"><img src="thumb.png" id="thumb-mario-kart-7" /><div>Mario Kart 7 <b>NEW!</b></div></a>
|
||||
<a class="four columns game" href="mario-kart-7/"><img src="thumb.png" id="thumb-mario-kart-7" /><div>Mario Kart 7</div></a>
|
||||
</div>
|
||||
<div class="row">
|
||||
<a class="four columns game" href="picross-3d-round-2/"><img src="thumb.png" id="thumb-picross-3d-round-2" /><div>Picross 3D: Round 2</div></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
82
smash-bros-ultimate/_cache_service_worker.js
Normal file
82
smash-bros-ultimate/_cache_service_worker.js
Normal file
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
Cache Service Worker template by mrc 2019
|
||||
mostly based in:
|
||||
https://github.com/GoogleChrome/samples/blob/gh-pages/service-worker/basic/service-worker.js
|
||||
https://github.com/chriscoyier/Simple-Offline-Site/blob/master/js/service-worker.js
|
||||
https://gist.github.com/kosamari/7c5d1e8449b2fbc97d372675f16b566e
|
||||
|
||||
Note for GitHub Pages:
|
||||
there can be an unexpected behaviour (cache not updating) when site is accessed from
|
||||
https://user.github.io/repo/ (without index.html) in some browsers (Firefox)
|
||||
use absolute paths if hosted in GitHub Pages in order to avoid it
|
||||
also invoke sw with an absolute path:
|
||||
navigator.serviceWorker.register('/repo/_cache_service_worker.js', {scope: '/repo/'})
|
||||
*/
|
||||
|
||||
|
||||
/* MOD: fix old caches for mrc */
|
||||
caches.keys().then(function(cacheNames){
|
||||
for(var i=0; i<cacheNames.length; i++){
|
||||
if(
|
||||
cacheNames[i]==='runtime' ||
|
||||
/^precache-\w+$/.test(cacheNames[i]) ||
|
||||
/^precache-editor-([\w\+]+)-\w+$/.test(cacheNames[i]) ||
|
||||
/^v?\d+\w?$/.test(cacheNames[i])
|
||||
){
|
||||
console.log('deleting old cache: '+cacheNames[i]);
|
||||
caches.delete(cacheNames[i]);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var PRECACHE_ID='smash-bros-ultimate-editor';
|
||||
var PRECACHE_VERSION='v1';
|
||||
var PRECACHE_URLS=[
|
||||
'/savegame-editors/smash-bros-ultimate/','/savegame-editors/smash-bros-ultimate/index.html',
|
||||
'/savegame-editors/smash-bros-ultimate/favicon.png',
|
||||
'/savegame-editors/smash-bros-ultimate/smash-bros-ultimate.js',
|
||||
'/savegame-editors/savegame-editor.js',
|
||||
'/savegame-editors/savegame-editor.css'
|
||||
];
|
||||
|
||||
|
||||
|
||||
// install event (fired when sw is first installed): opens a new cache
|
||||
self.addEventListener('install', evt => {
|
||||
evt.waitUntil(
|
||||
caches.open('precache-'+PRECACHE_ID+'-'+PRECACHE_VERSION)
|
||||
.then(cache => cache.addAll(PRECACHE_URLS))
|
||||
.then(self.skipWaiting())
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
// activate event (fired when sw is has been successfully installed): cleans up old outdated caches
|
||||
self.addEventListener('activate', evt => {
|
||||
evt.waitUntil(
|
||||
caches.keys().then(cacheNames => {
|
||||
return cacheNames.filter(cacheName => (cacheName.startsWith('precache-'+PRECACHE_ID+'-') && !cacheName.endsWith('-'+PRECACHE_VERSION)));
|
||||
}).then(cachesToDelete => {
|
||||
return Promise.all(cachesToDelete.map(cacheToDelete => {
|
||||
console.log('delete '+cacheToDelete);
|
||||
return caches.delete(cacheToDelete);
|
||||
}));
|
||||
}).then(() => self.clients.claim())
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
// fetch event (fired when requesting a resource): returns cached resource when possible
|
||||
self.addEventListener('fetch', evt => {
|
||||
if(evt.request.url.startsWith(self.location.origin)){ //skip cross-origin requests
|
||||
evt.respondWith(
|
||||
caches.match(evt.request).then(cachedResource => {
|
||||
if (cachedResource) {
|
||||
return cachedResource;
|
||||
}else{
|
||||
return fetch(evt.request);
|
||||
}
|
||||
})
|
||||
);
|
||||
}
|
||||
});
|
BIN
smash-bros-ultimate/favicon.png
Normal file
BIN
smash-bros-ultimate/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 875 B |
125
smash-bros-ultimate/index.html
Normal file
125
smash-bros-ultimate/index.html
Normal file
@@ -0,0 +1,125 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Savegame Editor – Super Smash Bros. Ultimate</title>
|
||||
<meta http-equiv="content-Type" content="text/html; charset=UTF-8"/>
|
||||
<meta name="description" content="A savegame editor for Super Smash Bros. Ultimate. It can let you edit your skill orbs, spirit points, items and more!"/>
|
||||
<meta name="keywords" content="html5, savegame, save, editor, hack, exploit, switch, super, smash, bros, ultimate, skill, orbs, spirit, points, money, items"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
|
||||
<link rel="shortcut icon" href="favicon.png"/>
|
||||
<link type="text/css" rel="stylesheet" href="../savegame-editor.css" media="all"/>
|
||||
<script type="text/javascript" src="../savegame-editor.js"></script>
|
||||
<script type="text/javascript" src="./smash-bros-ultimate.js"></script>
|
||||
<script type="text/javascript"><!--
|
||||
/* service worker */
|
||||
var FORCE_HTTPS=true;
|
||||
window.addEventListener('load',function(){
|
||||
if(location.protocol==='http:' && FORCE_HTTPS)
|
||||
location.replace(window.location.href.replace('http:','https:'));
|
||||
else if(location.protocol==='https:' && 'serviceWorker' in navigator)
|
||||
navigator.serviceWorker.register('/savegame-editors/smash-bros-ultimate/_cache_service_worker.js', {scope: '/savegame-editors/smash-bros-ultimate/'});
|
||||
}, false);
|
||||
--></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- HEADER -->
|
||||
<div id="header">
|
||||
<div id="header-top">
|
||||
<div class="row wrapper">
|
||||
<h1 class="six columns text-left"><img src="favicon.png" /> Savegame Editor <small>for Super Smash Bros. Ultimate</small></h1>
|
||||
<div class="six columns header-buttons text-right">
|
||||
by <a href="/">Marc Robledo</a>
|
||||
<i class="icon github"></i> <a href="https://github.com/marcrobledo/savegame-editors/tree/master/smash-bros-ultimate" target="_blank">See on GitHub</a>
|
||||
<i class="icon heart"></i> <a href="https://www.paypal.me/marcrobledo/5" target="_blank" rel="nofollow">Donate</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hidden row wrapper" id="toolbar">
|
||||
<div class="twelve columns text-center">
|
||||
<button class="close" onclick="closeFile()"><i class="icon close"></i> Close file</button>
|
||||
<button class="colored" onclick="saveChanges()"><i class="icon accept"></i> Save changes</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- THE EDITOR -->
|
||||
<div id="the-editor" class="wrapper hidden">
|
||||
<!-- MAIN -->
|
||||
<h3 class="orange">Main</h3>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="six columns center"><label for="number-tickets">Tickets</label></div>
|
||||
<div class="four columns center"><input id="number-tickets" type="text" /></div>
|
||||
|
||||
<div class="six columns center"><label for="number-gold">Gold</label></div>
|
||||
<div class="four columns center"><input id="number-gold" type="text" /></div>
|
||||
|
||||
<div class="six columns center"><label for="number-hammers">Hammers</label></div>
|
||||
<div class="four columns center"><input id="number-hammers" type="text" /></div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- SPIRITS -->
|
||||
<h3 class="green">Spirits</h3>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="six columns center"><label for="number-snacks-s">Snacks (S)</label></div>
|
||||
<div class="four columns center"><input id="number-snacks-s" type="text" /></div>
|
||||
|
||||
<div class="six columns center"><label for="number-snacks-m">Snacks (M)</label></div>
|
||||
<div class="four columns center"><input id="number-snacks-m" type="text" /></div>
|
||||
|
||||
<div class="six columns center"><label for="number-snacks-l">Snacks (L)</label></div>
|
||||
<div class="four columns center"><input id="number-snacks-l" type="text" /></div>
|
||||
|
||||
<div class="six columns center"><label for="number-sp">SP</label></div>
|
||||
<div class="four columns center"><input id="number-sp" type="text" /></div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- SPIRIT BOARD ITEMS -->
|
||||
<h3 class="blue">Spirit board items</h3>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="six columns center"><label for="number-items-shuffle-all">Shuffle all</label></div>
|
||||
<div class="four columns center"><input id="number-items-shuffle-all" type="text" /></div>
|
||||
|
||||
<div class="six columns center"><label for="number-items-all-primaries">All primaries</label></div>
|
||||
<div class="four columns center"><input id="number-items-all-primaries" type="text" /></div>
|
||||
|
||||
<div class="six columns center"><label for="number-items-all-supports">All supports</label></div>
|
||||
<div class="four columns center"><input id="number-items-all-supports" type="text" /></div>
|
||||
|
||||
<div class="six columns center"><label for="number-items-filler">Filler</label></div>
|
||||
<div class="four columns center"><input id="number-items-filler" type="text" /></div>
|
||||
|
||||
<div class="six columns center"><label for="number-items-rematch">Rematch</label></div>
|
||||
<div class="four columns center"><input id="number-items-rematch" type="text" /></div>
|
||||
|
||||
<div class="six columns center"><label for="number-items-50-damage">50% damage</label></div>
|
||||
<div class="four columns center"><input id="number-items-50-damage" type="text" /></div>
|
||||
|
||||
<div class="six columns center"><label for="number-items-slow-fs-charging">Slow FS charging</label></div>
|
||||
<div class="four columns center"><input id="number-items-slow-fs-charging" type="text" /></div>
|
||||
|
||||
<div class="six columns center"><label for="number-items-weaken-minions">Weaken minions</label></div>
|
||||
<div class="four columns center"><input id="number-items-weaken-minions" type="text" /></div>
|
||||
|
||||
<div class="six columns center"><label for="number-items-health-drain">Health drain</label></div>
|
||||
<div class="four columns center"><input id="number-items-health-drain" type="text" /></div>
|
||||
|
||||
<div class="six columns center"><label for="number-items-disable-items">Dsiable items</label></div>
|
||||
<div class="four columns center"><input id="number-items-disable-items" type="text" /></div>
|
||||
|
||||
<div class="six columns center"><label for="number-items-shield-spacer">Shield spacer</label></div>
|
||||
<div class="four columns center"><input id="number-items-shield-spacer" type="text" /></div>
|
||||
|
||||
<div class="six columns center"><label for="number-items-sluggish-shield">Sluggish shield</label></div>
|
||||
<div class="four columns center"><input id="number-items-sluggish-shield" type="text" /></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
95
smash-bros-ultimate/smash-bros-ultimate.js
Normal file
95
smash-bros-ultimate/smash-bros-ultimate.js
Normal file
@@ -0,0 +1,95 @@
|
||||
/*
|
||||
Super Smash Bros. Ultimate for HTML5 Save Editor v2019
|
||||
by Marc Robledo 2019
|
||||
|
||||
|
||||
|
||||
INFO: https://github.com/CapitanRetraso/Ultimate-Smasher
|
||||
*/
|
||||
|
||||
SavegameEditor={
|
||||
Name:'Super Smash Bros. Ultimate',
|
||||
Filename:'system_data.bin',
|
||||
|
||||
Offsets:{
|
||||
ITEMS_SHUFFLE_ALL:0x4831c0,
|
||||
ITEMS_ALL_PRIMARIES:0x4831c1,
|
||||
ITEMS_ALL_SUPPORTS:0x4831c2,
|
||||
ITEMS_FILLER:0x4831c3,
|
||||
ITEMS_REMATCH:0x4831c4,
|
||||
ITEMS_50_DAMAGE:0x4831c6,
|
||||
ITEMS_SLOW_FS_CHARGING:0x4831c7,
|
||||
ITEMS_WEAKEN_MINIONS:0x4831c8,
|
||||
ITEMS_HEALTH_DRAIN:0x4831c9,
|
||||
ITEMS_DISABLE_ITEMS:0x4831ca,
|
||||
ITEMS_SHIELD_SPACER:0x4831cb,
|
||||
ITEMS_SLUGGISH_SHIELD:0x4831cc,
|
||||
SNACK_S: 0x4831ce,
|
||||
SNACK_M: 0x4831d0,
|
||||
SNACK_L: 0x4831d2,
|
||||
SPIRIT_POINTS: 0x4831e4,
|
||||
TICKETS: 0x5506cc,
|
||||
GOLD: 0x5506dc,
|
||||
HAMMERS: 0x555e5c
|
||||
},
|
||||
|
||||
/* check if savegame is valid */
|
||||
checkValidSavegame:function(){
|
||||
return (tempFile.fileSize===5982968)
|
||||
},
|
||||
|
||||
/* preload function */
|
||||
preload:function(){
|
||||
setNumericRange('items-shuffle-all', 0, 99);
|
||||
setNumericRange('items-all-primaries', 0, 99);
|
||||
setNumericRange('items-all-supports', 0, 99);
|
||||
setNumericRange('items-filler', 0, 99);
|
||||
setNumericRange('items-rematch', 0, 99);
|
||||
setNumericRange('items-50-damage', 0, 99);
|
||||
setNumericRange('items-slow-fs-charging', 0, 99);
|
||||
setNumericRange('items-weaken-minions', 0, 99);
|
||||
setNumericRange('items-health-drain', 0, 99);
|
||||
setNumericRange('items-disable-items', 0, 99);
|
||||
setNumericRange('items-shield-spacer', 0, 99);
|
||||
setNumericRange('items-sluggish-shield', 0, 99);
|
||||
setNumericRange('snacks-s', 0, 999);
|
||||
setNumericRange('snacks-m', 0, 999);
|
||||
setNumericRange('snacks-l', 0, 999);
|
||||
setNumericRange('sp', 0, 999999);
|
||||
setNumericRange('tickets', 0, 99);
|
||||
setNumericRange('gold', 0, 999999);
|
||||
setNumericRange('hammers', 0, 9);
|
||||
},
|
||||
|
||||
/* load function */
|
||||
load:function(){
|
||||
tempFile.fileName='system_data.bin';
|
||||
tempFile.littleEndian=true;
|
||||
|
||||
setValue('items-shuffle-all', tempFile.readU8(this.Offsets.ITEMS_SHUFFLE_ALL));
|
||||
setValue('items-all-primaries', tempFile.readU8(this.Offsets.ITEMS_ALL_PRIMARIES));
|
||||
setValue('items-all-supports', tempFile.readU8(this.Offsets.ITEMS_ALL_SUPPORTS));
|
||||
setValue('items-filler', tempFile.readU8(this.Offsets.ITEMS_FILLER));
|
||||
setValue('items-rematch', tempFile.readU8(this.Offsets.ITEMS_REMATCH));
|
||||
setValue('items-50-damage', tempFile.readU8(this.Offsets.ITEMS_50_DAMAGE));
|
||||
setValue('items-slow-fs-charging', tempFile.readU8(this.Offsets.ITEMS_SLOW_FS_CHARGING));
|
||||
setValue('items-weaken-minions', tempFile.readU8(this.Offsets.ITEMS_WEAKEN_MINIONS));
|
||||
setValue('items-health-drain', tempFile.readU8(this.Offsets.ITEMS_HEALTH_DRAIN));
|
||||
setValue('items-disable-items', tempFile.readU8(this.Offsets.ITEMS_DISABLE_ITEMS));
|
||||
setValue('items-shield-spacer', tempFile.readU8(this.Offsets.ITEMS_SHIELD_SPACER));
|
||||
setValue('items-sluggish-shield', tempFile.readU8(this.Offsets.ITEMS_SLUGGISH_SHIELD));
|
||||
|
||||
setValue('snacks-s', tempFile.readU16(this.Offsets.SNACK_S));
|
||||
setValue('snacks-m', tempFile.readU16(this.Offsets.SNACK_M));
|
||||
setValue('snacks-l', tempFile.readU16(this.Offsets.SNACK_L));
|
||||
setValue('sp', tempFile.readU32(this.Offsets.SPIRIT_POINTS));
|
||||
setValue('tickets', tempFile.readU8(this.Offsets.TICKETS));
|
||||
setValue('gold', tempFile.readU32(this.Offsets.GOLD));
|
||||
setValue('hammers', tempFile.readU8(this.Offsets.HAMMERS));
|
||||
},
|
||||
|
||||
/* save function */
|
||||
save:function(){
|
||||
tempFile.writeU8(this.Offsets.HAMMERS, getValue('hammers'));
|
||||
}
|
||||
}
|
BIN
smash-bros-ultimate/system_data.bin
Normal file
BIN
smash-bros-ultimate/system_data.bin
Normal file
Binary file not shown.
BIN
smash-bros-ultimate/thumb.jpg
Normal file
BIN
smash-bros-ultimate/thumb.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 92 KiB |
82
super-kirby-clash/_cache_service_worker.js
Normal file
82
super-kirby-clash/_cache_service_worker.js
Normal file
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
Cache Service Worker template by mrc 2019
|
||||
mostly based in:
|
||||
https://github.com/GoogleChrome/samples/blob/gh-pages/service-worker/basic/service-worker.js
|
||||
https://github.com/chriscoyier/Simple-Offline-Site/blob/master/js/service-worker.js
|
||||
https://gist.github.com/kosamari/7c5d1e8449b2fbc97d372675f16b566e
|
||||
|
||||
Note for GitHub Pages:
|
||||
there can be an unexpected behaviour (cache not updating) when site is accessed from
|
||||
https://user.github.io/repo/ (without index.html) in some browsers (Firefox)
|
||||
use absolute paths if hosted in GitHub Pages in order to avoid it
|
||||
also invoke sw with an absolute path:
|
||||
navigator.serviceWorker.register('/repo/_cache_service_worker.js', {scope: '/repo/'})
|
||||
*/
|
||||
|
||||
|
||||
/* MOD: fix old caches for mrc */
|
||||
caches.keys().then(function(cacheNames){
|
||||
for(var i=0; i<cacheNames.length; i++){
|
||||
if(
|
||||
cacheNames[i]==='runtime' ||
|
||||
/^precache-\w+$/.test(cacheNames[i]) ||
|
||||
/^precache-editor-([\w\+]+)-\w+$/.test(cacheNames[i]) ||
|
||||
/^v?\d+\w?$/.test(cacheNames[i])
|
||||
){
|
||||
console.log('deleting old cache: '+cacheNames[i]);
|
||||
caches.delete(cacheNames[i]);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var PRECACHE_ID='super-kirby-clash-editor';
|
||||
var PRECACHE_VERSION='v1';
|
||||
var PRECACHE_URLS=[
|
||||
'/savegame-editors/super-kirby-clash/','/savegame-editors/super-kirby-clash/index.html',
|
||||
'/savegame-editors/super-kirby-clash/favicon.png',
|
||||
'/savegame-editors/super-kirby-clash/super-kirby-clash.js',
|
||||
'/savegame-editors/savegame-editor.js',
|
||||
'/savegame-editors/savegame-editor.css'
|
||||
];
|
||||
|
||||
|
||||
|
||||
// install event (fired when sw is first installed): opens a new cache
|
||||
self.addEventListener('install', evt => {
|
||||
evt.waitUntil(
|
||||
caches.open('precache-'+PRECACHE_ID+'-'+PRECACHE_VERSION)
|
||||
.then(cache => cache.addAll(PRECACHE_URLS))
|
||||
.then(self.skipWaiting())
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
// activate event (fired when sw is has been successfully installed): cleans up old outdated caches
|
||||
self.addEventListener('activate', evt => {
|
||||
evt.waitUntil(
|
||||
caches.keys().then(cacheNames => {
|
||||
return cacheNames.filter(cacheName => (cacheName.startsWith('precache-'+PRECACHE_ID+'-') && !cacheName.endsWith('-'+PRECACHE_VERSION)));
|
||||
}).then(cachesToDelete => {
|
||||
return Promise.all(cachesToDelete.map(cacheToDelete => {
|
||||
console.log('delete '+cacheToDelete);
|
||||
return caches.delete(cacheToDelete);
|
||||
}));
|
||||
}).then(() => self.clients.claim())
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
// fetch event (fired when requesting a resource): returns cached resource when possible
|
||||
self.addEventListener('fetch', evt => {
|
||||
if(evt.request.url.startsWith(self.location.origin)){ //skip cross-origin requests
|
||||
evt.respondWith(
|
||||
caches.match(evt.request).then(cachedResource => {
|
||||
if (cachedResource) {
|
||||
return cachedResource;
|
||||
}else{
|
||||
return fetch(evt.request);
|
||||
}
|
||||
})
|
||||
);
|
||||
}
|
||||
});
|
BIN
super-kirby-clash/favicon.png
Normal file
BIN
super-kirby-clash/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 477 B |
111
super-kirby-clash/index.html
Normal file
111
super-kirby-clash/index.html
Normal file
@@ -0,0 +1,111 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Savegame Editor – Super Kirby Clash</title>
|
||||
<meta http-equiv="content-Type" content="text/html; charset=UTF-8"/>
|
||||
<meta name="description" content="A savegame editor for Super Kirby Clash. It can edit values for your apple and materials."/>
|
||||
<meta name="keywords" content="html5, savegame, save, editor, hack, exploit, switch, super kirby clash, free, apples"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
|
||||
<link rel="shortcut icon" href="favicon.png"/>
|
||||
<link type="text/css" rel="stylesheet" href="../savegame-editor.css" media="all"/>
|
||||
<script type="text/javascript" src="../savegame-editor.js"></script>
|
||||
<script type="text/javascript" src="./super-kirby-clash.js"></script>
|
||||
<script type="text/javascript"><!--
|
||||
/* service worker */
|
||||
var FORCE_HTTPS=true;
|
||||
window.addEventListener('load',function(){
|
||||
if(location.protocol==='http:' && FORCE_HTTPS)
|
||||
location.replace(window.location.href.replace('http:','https:'));
|
||||
else if(location.protocol==='https:' && 'serviceWorker' in navigator)
|
||||
navigator.serviceWorker.register('/savegame-editors/super-kirby-clash/_cache_service_worker.js', {scope: '/savegame-editors/super-kirby-clash/'});
|
||||
}, false);
|
||||
--></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- HEADER -->
|
||||
<div id="header">
|
||||
<div id="header-top">
|
||||
<div class="row wrapper">
|
||||
<h1 class="six columns text-left"><img src="favicon.png" /> Savegame Editor <small>for Super Kirby Clash</small></h1>
|
||||
<div class="six columns header-buttons text-right">
|
||||
by <a href="/">Marc Robledo</a>
|
||||
<i class="icon github"></i> <a href="https://github.com/marcrobledo/savegame-editors/tree/master/super-kirby-clash" target="_blank">See on GitHub</a>
|
||||
<i class="icon heart"></i> <a href="https://www.paypal.me/marcrobledo/5" target="_blank" rel="nofollow">Donate</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hidden row wrapper" id="toolbar">
|
||||
<div class="twelve columns text-center">
|
||||
<button class="close" onclick="closeFile()"><i class="icon close"></i> Close file</button>
|
||||
<button class="colored" onclick="saveChanges()"><i class="icon accept"></i> Save changes</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- THE EDITOR -->
|
||||
<div id="the-editor" class="wrapper hidden">
|
||||
<!-- PROFILE -->
|
||||
<!-- <h3 class="orange">Profile</h3>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-name">Message</label></div>
|
||||
<div class="three columns"><input id="input-name" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-time">Played time <small>(in seconds)</small></label></div>
|
||||
<div class="three columns"><input id="input-time" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-missions">Completed missions</label></div>
|
||||
<div class="three columns"><input id="input-missions" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-encounters">Encounters</label></div>
|
||||
<div class="three columns"><input id="input-encounters" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-multiplayerbattles">Multiplayer battles</label></div>
|
||||
<div class="three columns"><input id="input-multiplayerbattles" type="text" class="fw" /></div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<!-- APPLE GEMS -->
|
||||
<h3 class="red">Apple gems</h3>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="number-applegems">Apple gems</label></div>
|
||||
<div class="three columns"><input id="number-applegems" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="number-boughtapplegems">Bought apple gems <small>(affects tree)</small></label></div>
|
||||
<div class="three columns"><input id="number-boughtapplegems" type="text" class="fw" /></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- CRYSTAL SHARDS -->
|
||||
<h3 class="green">Crystal shards</h3>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="number-shards-red">Fire shards</label></div>
|
||||
<div class="three columns"><input id="number-shards-red" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="number-shards-blue">Water shards</label></div>
|
||||
<div class="three columns"><input id="number-shards-blue" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="number-shards-yellow">Light shards</label></div>
|
||||
<div class="three columns"><input id="number-shards-yellow" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="number-shards-rare">Rare shards</label></div>
|
||||
<div class="three columns"><input id="number-shards-rare" type="text" class="fw" /></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
BIN
super-kirby-clash/savedata.dat
Normal file
BIN
super-kirby-clash/savedata.dat
Normal file
Binary file not shown.
82
super-kirby-clash/super-kirby-clash.js
Normal file
82
super-kirby-clash/super-kirby-clash.js
Normal file
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
Super Kirby Clash savegame editor v20190912
|
||||
by Marc Robledo 2019
|
||||
*/
|
||||
|
||||
SavegameEditor={
|
||||
Name:'Super Kirby Clash',
|
||||
Filename:'savedata.dat',
|
||||
|
||||
/* Constants */
|
||||
Offsets:{
|
||||
APPLE_GEMS:0x3ef0,
|
||||
BOUGHT_APPLE_GEMS:0x3f00,
|
||||
SHARDS_RED:0x3f20,
|
||||
SHARDS_BLUE:0x3f24,
|
||||
SHARDS_YELLOW:0x3f28,
|
||||
SHARDS_RARE:0x3f2c
|
||||
//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===54344)
|
||||
},
|
||||
|
||||
/* preload function */
|
||||
preload:function(){
|
||||
setNumericRange('applegems', 0, 99999);
|
||||
setNumericRange('boughtapplegems', 0, 5000);
|
||||
setNumericRange('shards-red', 0, 9999);
|
||||
setNumericRange('shards-blue', 0, 9999);
|
||||
setNumericRange('shards-yellow', 0, 9999);
|
||||
setNumericRange('shards-rare', 0, 9999);
|
||||
|
||||
//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.readU32(this.Offsets.PROFILE_PLAYED_TIME));
|
||||
//setValue('missions', tempFile.readU32(this.Offsets.PROFILE_COMPLETED_MISSIONS));
|
||||
//setValue('encounters', tempFile.readU32(this.Offsets.PROFILE_MULTIPLAYER_ENCOUNTERS));
|
||||
//setValue('multiplayerbattles', tempFile.readU32(this.Offsets.PROFILE_MULTIPLAYER_BATTLES));
|
||||
|
||||
setValue('applegems', tempFile.readU32(this.Offsets.APPLE_GEMS));
|
||||
setValue('boughtapplegems', tempFile.readU16(this.Offsets.BOUGHT_APPLE_GEMS));
|
||||
|
||||
setValue('shards-red', tempFile.readU16(this.Offsets.SHARDS_RED));
|
||||
setValue('shards-blue', tempFile.readU16(this.Offsets.SHARDS_BLUE));
|
||||
setValue('shards-yellow', tempFile.readU16(this.Offsets.SHARDS_YELLOW));
|
||||
setValue('shards-rare', tempFile.readU16(this.Offsets.SHARDS_RARE));
|
||||
},
|
||||
|
||||
/* save function */
|
||||
save:function(){
|
||||
//tempFile.writeU16String(this.Offsets.PROFILE_NAME, 16, getValue('name'));
|
||||
//tempFile.writeU32(this.Offsets.PROFILE_PLAYED_TIME, getValue('time'));
|
||||
//tempFile.writeU32(this.Offsets.PROFILE_COMPLETED_MISSIONS, getValue('missions'));
|
||||
//tempFile.writeU32(this.Offsets.PROFILE_MULTIPLAYER_ENCOUNTERS, getValue('encounters'));
|
||||
//tempFile.writeU32(this.Offsets.PROFILE_MULTIPLAYER_BATTLES, getValue('multiplayerbattles'));
|
||||
|
||||
tempFile.writeU32(this.Offsets.APPLE_GEMS, getValue('applegems'));
|
||||
tempFile.writeU16(this.Offsets.BOUGHT_APPLE_GEMS, getValue('boughtapplegems'));
|
||||
|
||||
tempFile.writeU16(this.Offsets.SHARDS_RED, getValue('shards-red'));
|
||||
tempFile.writeU16(this.Offsets.SHARDS_BLUE, getValue('shards-blue'));
|
||||
tempFile.writeU16(this.Offsets.SHARDS_YELLOW, getValue('shards-yellow'));
|
||||
tempFile.writeU16(this.Offsets.SHARDS_RARE, getValue('shards-rare'));
|
||||
}
|
||||
}
|
BIN
super-kirby-clash/thumb.jpg
Normal file
BIN
super-kirby-clash/thumb.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 75 KiB |
Reference in New Issue
Block a user