0
0
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:
Marc Robledo 2020-02-18 09:49:14 +01:00
parent afa2dba70d
commit 85e69745b4
7 changed files with 349 additions and 0 deletions

View File

@ -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)

View 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);
}
})
);
}
});

Binary file not shown.

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
View File

@ -0,0 +1,212 @@
<!DOCTYPE html>
<html>
<head>
<title>Savegame Editor &ndash; 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>

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB