mirror of
https://github.com/marcrobledo/savegame-editors.git
synced 2025-04-24 16:35:10 +00:00
oops! forgot to add sushi striker editor in last commit
This commit is contained in:
parent
afa2dba70d
commit
85e69745b4
@ -3,13 +3,16 @@ A compilation of console savegame editors made with HTML5 technologies.
|
||||
|
||||
It can edit a few bits in the following games:
|
||||
* The legend of Zelda: Breath of the wild (Wii U / Switch)
|
||||
* Super Smash Bros. Ultimate (Switch)
|
||||
* Hyrule Warriors (Wii U)
|
||||
* Kid Icarus: Uprising (3DS)
|
||||
* Final Fantasy Explorers (3DS)
|
||||
* Mario Kart 7 (3DS)
|
||||
* Super Kirby Clash (Switch)
|
||||
* Team Kirby Clash Deluxe (3DS)
|
||||
* Kirby's Blowout Blast (3DS)
|
||||
* Picross 3D Round 2 (3DS)
|
||||
* Sushi Striker (3DS)
|
||||
* Pokémon Picross (3DS)
|
||||
* Pokémon Shuffle (3DS)
|
||||
* Rhythm Paradise Megamix (3DS)
|
||||
|
82
sushi-striker/_cache_service_worker.js
Normal file
82
sushi-striker/_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='sushi-striker-editor';
|
||||
var PRECACHE_VERSION='v1';
|
||||
var PRECACHE_URLS=[
|
||||
'/savegame-editors/sushi-striker/','/savegame-editors/sushi-striker/index.html',
|
||||
'/savegame-editors/sushi-striker/favicon.png',
|
||||
'/savegame-editors/sushi-striker/sushi-striker.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
sushi-striker/backup_slot1.dat
Normal file
BIN
sushi-striker/backup_slot1.dat
Normal file
Binary file not shown.
BIN
sushi-striker/favicon.png
Normal file
BIN
sushi-striker/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.1 KiB |
212
sushi-striker/index.html
Normal file
212
sushi-striker/index.html
Normal file
@ -0,0 +1,212 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Savegame Editor – Sushi Striker</title>
|
||||
<meta http-equiv="content-Type" content="text/html; charset=UTF-8"/>
|
||||
<meta name="description" content="A savegame editor for Sushi Striker. It can edit all your items amount and unlock Kyatten sprite"/>
|
||||
<meta name="keywords" content="html5, savegame, save, editor, hack, exploit, 3ds, sushi, striker, item, kyatten, dlc, unlock"/>
|
||||
<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="./sushi-striker.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/sushi-striker/_cache_service_worker.js', {scope: '/savegame-editors/sushi-striker/'});
|
||||
}, 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 Sushi Striker</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/sushi-striker" 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">
|
||||
<!-- ITEMS -->
|
||||
<h3 class="orange">Items</h3>
|
||||
<div class="container" id="container-items">
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item0">Searing Torch</label></div>
|
||||
<div class="three columns"><input id="input-item0" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item1">Exp Charm S</label></div>
|
||||
<div class="three columns"><input id="input-item1" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item2">Exp Charm M</label></div>
|
||||
<div class="three columns"><input id="input-item2" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item3">Exp Charm L</label></div>
|
||||
<div class="three columns"><input id="input-item3" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item4">Guardian Charm S</label></div>
|
||||
<div class="three columns"><input id="input-item4" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item5">Guardian Charm M</label></div>
|
||||
<div class="three columns"><input id="input-item5" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item6">Guardian Charm L</label></div>
|
||||
<div class="three columns"><input id="input-item6" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item7">Skill Charm</label></div>
|
||||
<div class="three columns"><input id="input-item7" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item8">Great Skill Charm</label></div>
|
||||
<div class="three columns"><input id="input-item8" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item9">Canned Stamina</label></div>
|
||||
<div class="three columns"><input id="input-item9" type="text" class="fw" /></div>
|
||||
</div> <div class="row">
|
||||
<div class="nine columns"><label for="input-item10">Canned Power</label></div>
|
||||
<div class="three columns"><input id="input-item10" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item19">Small Renewal Bean</label></div>
|
||||
<div class="three columns"><input id="input-item19" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item20">Renewal Bean</label></div>
|
||||
<div class="three columns"><input id="input-item20" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item21">Big Renewal Bean</label></div>
|
||||
<div class="three columns"><input id="input-item21" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item22">Great Renewal Bean</label></div>
|
||||
<div class="three columns"><input id="input-item22" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item23">Jacket</label></div>
|
||||
<div class="three columns"><input id="input-item23" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item24">Sushi Sprite Catalog</label></div>
|
||||
<div class="three columns"><input id="input-item24" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item25">Secret Scroll</label></div>
|
||||
<div class="three columns"><input id="input-item25" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item26">Kodiak's Key</label></div>
|
||||
<div class="three columns"><input id="input-item26" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item27">Ausprey's Key</label></div>
|
||||
<div class="three columns"><input id="input-item27" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item28">Purrsilla's Key</label></div>
|
||||
<div class="three columns"><input id="input-item28" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item29">Research Notes</label></div>
|
||||
<div class="three columns"><input id="input-item29" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item30">Mysterious Stone</label></div>
|
||||
<div class="three columns"><input id="input-item30" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item31">weird round rock</label></div>
|
||||
<div class="three columns"><input id="input-item31" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item32">Party Charm</label></div>
|
||||
<div class="three columns"><input id="input-item32" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item33">Training Black Belt</label></div>
|
||||
<div class="three columns"><input id="input-item33" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item34">Potential Plate</label></div>
|
||||
<div class="three columns"><input id="input-item34" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item35">Potential Plate (Kazurava Rank 4)</label></div>
|
||||
<div class="three columns"><input id="input-item35" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item36">Potential Plate (Golekan Rank 3)</label></div>
|
||||
<div class="three columns"><input id="input-item36" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item37">Potential Plate (Crowkan Rank 5)</label></div>
|
||||
<div class="three columns"><input id="input-item37" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item38">Potential Plate (Garu-o Rank 7)</label></div>
|
||||
<div class="three columns"><input id="input-item38" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item39">Potential Plate (Alt?)</label></div>
|
||||
<div class="three columns"><input id="input-item39" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item40">Potential Plate (Kyatten Rank 2) <strong>Exclusive Japanese DLC</strong></label></div>
|
||||
<div class="three columns"><input id="input-item40" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item41">Potential Plate (Owlten Rank 7)</label></div>
|
||||
<div class="three columns"><input id="input-item41" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item42">Potential Plate (Suiten Rank 2)</label></div>
|
||||
<div class="three columns"><input id="input-item42" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item43">Potential Plate (Boneten Rank 8)</label></div>
|
||||
<div class="three columns"><input id="input-item43" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item44">Potential Plate (Batten Rank 6)</label></div>
|
||||
<div class="three columns"><input id="input-item44" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item45">Potential Plate (Faeten Rank 2)</label></div>
|
||||
<div class="three columns"><input id="input-item45" type="text" class="fw" /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nine columns"><label for="input-item46">Potential Plate (Hohten Rank 3)</label></div>
|
||||
<div class="three columns"><input id="input-item46" type="text" class="fw" /></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
52
sushi-striker/sushi-striker.js
Normal file
52
sushi-striker/sushi-striker.js
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
Sushi Striker for HTML5 Save Editor v20191003
|
||||
by Marc Robledo 2019
|
||||
*/
|
||||
|
||||
SavegameEditor={
|
||||
Name:'Sushi Striker',
|
||||
Filename:'backup_slot1.dat',
|
||||
|
||||
ITEMS_OFFSET:0x1808,
|
||||
MAX_ITEMS:47,
|
||||
|
||||
/* check if savegame is valid */
|
||||
checkValidSavegame:function(){
|
||||
return (tempFile.fileSize===9296)
|
||||
},
|
||||
|
||||
/* preload function */
|
||||
preload:function(){
|
||||
for(var i=0; i<this.MAX_ITEMS; i++){
|
||||
if(get('input-item'+i))
|
||||
setNumericRange('item'+i, 0, 0xffff);
|
||||
}
|
||||
},
|
||||
|
||||
/* load function */
|
||||
load:function(){
|
||||
tempFile.littleEndian=true;
|
||||
|
||||
for(var i=0; i<this.MAX_ITEMS; i++){
|
||||
if(get('input-item'+i))
|
||||
setValue('item'+i, tempFile.readU32(this.ITEMS_OFFSET+i*8));
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
/* save function */
|
||||
save:function(){
|
||||
for(var i=0; i<this.MAX_ITEMS; i++){
|
||||
if(get('input-item'+i)){
|
||||
var amount=getValue('item'+i);
|
||||
//console.log(amount);
|
||||
if(!amount){
|
||||
console.log(i);
|
||||
}
|
||||
tempFile.writeU32(this.ITEMS_OFFSET+i*8, amount);
|
||||
tempFile.writeU8(this.ITEMS_OFFSET+i*8+4, amount?1:0);
|
||||
}
|
||||
}
|
||||
popa+3;
|
||||
}
|
||||
}
|
BIN
sushi-striker/thumb.jpg
Normal file
BIN
sushi-striker/thumb.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 58 KiB |
Loading…
x
Reference in New Issue
Block a user