0
0
mirror of https://github.com/marcrobledo/savegame-editors.git synced 2025-04-24 16:35:10 +00:00

Add Nintendogs + Cats item editor

This commit is contained in:
magiczocker10 2024-07-04 17:26:18 +02:00 committed by GitHub
parent b479efe926
commit a15d739871
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 607 additions and 0 deletions

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='picross-3d-round-2-editor';
var PRECACHE_VERSION='v1';
var PRECACHE_URLS=[
'/savegame-editors/picross-3d-round-2/','/savegame-editors/picross-3d-round-2/index.html',
'/savegame-editors/picross-3d-round-2/favicon.png',
'/savegame-editors/picross-3d-round-2/picross-3d-round-2.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);
}
})
);
}
});

127
nintendogs+cats/index.html Normal file
View File

@ -0,0 +1,127 @@
<!DOCTYPE html>
<html>
<head>
<title>Savegame Editor &ndash; Nintendogs + Cats</title>
<meta http-equiv="content-Type" content="text/html; charset=UTF-8"/>
<meta name="description" content="A savegame editor for Nintendogs + Cats."/>
<meta name="keywords" content="html5, savegame, save, editor, hack, exploit, 3ds, nintendogs+cats, unlock, amiibo, puzzles"/>
<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="./nintendogs+cats.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/nintendogs+cats/_cache_service_worker.js', {scope: '/savegame-editors/nintendogs+cat/'});
}, 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 Nintendogs+Cats</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/nintendogs+cats" 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">
<!-- Money -->
<h3 class="orange">Account</h3>
<div class="container">
<div class="row" id="row-money">
<div class="columns c8"><label for="number-money">Money</label></div>
<div class="columns c4"><input id="number-money" type="text" class="fw text-right" /></div>
</div>
</div>
<!-- Supplies -->
<h3 class="orange">Food & Drink</h3>
<div class="container">
<div class="row" id="row-fooddrink">
<div class="columns c3">Name</div>
<div class="columns c1">Amount</div>
<div class="columns c3">Name</div>
<div class="columns c1">Amount</div>
<div class="columns c3">Name</div>
<div class="columns c1">Amount</div>
</div>
</div>
<h3 class="orange">Toys</h3>
<div class="container">
<div class="row" id="row-toys">
<div class="columns c3">Name</div>
<div class="columns c1">Amount</div>
<div class="columns c3">Name</div>
<div class="columns c1">Amount</div>
<div class="columns c3">Name</div>
<div class="columns c1">Amount</div>
</div>
</div>
<h3 class="orange">Accessories</h3>
<div class="container">
<div class="row" id="row-accessories">
<div class="columns c3">Name</div>
<div class="columns c1">Amount</div>
<div class="columns c3">Name</div>
<div class="columns c1">Amount</div>
<div class="columns c3">Name</div>
<div class="columns c1">Amount</div>
</div>
</div>
<h3 class="orange">Furniture</h3>
<div class="container">
<div class="row" id="row-furniture">
<div class="columns c3">Name</div>
<div class="columns c1">Amount</div>
<div class="columns c3">Name</div>
<div class="columns c1">Amount</div>
<div class="columns c3">Name</div>
<div class="columns c1">Amount</div>
</div>
</div>
<h3 class="orange">Leashes</h3>
<div class="container">
<div class="row" id="row-leashes">
<div class="columns c3">Name</div>
<div class="columns c1">Amount</div>
<div class="columns c3">Name</div>
<div class="columns c1">Amount</div>
<div class="columns c3">Name</div>
<div class="columns c1">Amount</div>
</div>
</div>
<h3 class="orange">Skins</h3>
<div class="container">
<div class="row" id="row-skins">
<div class="columns c3">Name</div>
<div class="columns c1">Amount</div>
<div class="columns c3">Name</div>
<div class="columns c1">Amount</div>
<div class="columns c3">Name</div>
<div class="columns c1">Amount</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,83 @@
/*
Nintendogs + Cats for HTML5 Save Editor v?
by Marc Robledo 2016
*/
var reg = /\d+/;
SavegameEditor={
Name:'Nintendogs + Cats',
Filename:'sysdata.dat',
/* Constants */
Constants:{
MONEY_OFFSET:0xA0
},
_write_money:function(){
tempFile.writeU32(
SavegameEditor.Constants.MONEY_OFFSET,
getValue('money')
);
},
_write_supply_amount:function(e){
tempFile.writeU8(
Number(e.target.dataset.offset),
getValue(e.target.id)
);
},
/* check if savegame is valid */
checkValidSavegame:function(){
return (tempFile.fileSize==60936)
},
preload:function() {
get('number-money').addEventListener('change', SavegameEditor._write_money);
fetch('/savegame-editors/nintendogs+cats/supplies.json')
.then(function(response) {
return response.json();
}).then(function(data) {
var counter = 0;
for (var rowtype of [
['fooddrink', 'food & drink'],
['toys', 'toys'],
['accessories', 'accessories'],
['furniture', 'furnitures'],
['leashes', 'leashes'],
['skins', 'skins']
]){
var rt = get('row-'+rowtype[0]);
counter = 0;
for (var entry of data[rowtype[1]]) {
rt.append(
col(3, span(entry[1]+' ('+entry[0]+')')),
col(1, inputNumber('supplies_' + rowtype[0] + '_'+counter+'_amount', 0, 99, tempFile.readU8(Number(entry[0]))))
);
get('number-supplies_' + rowtype[0] + '_'+counter+'_amount').dataset.offset = entry[0];
get('number-supplies_' + rowtype[0] + '_'+counter+'_amount').addEventListener('change', SavegameEditor._write_supply_amount);
counter++;
}
var lastRow = counter%3;
if (lastRow !== 0) {
rt.append(col((3-lastRow) * 4, span('')));
}
}
}).catch(function(error) {
console.log('[Picross Save Editor]', error);
});
},
/* load function */
load:function(){
tempFile.fileName='sysdata.dat';
tempFile.littleEndian=true;
setValue('money', tempFile.readU32(SavegameEditor.Constants.MONEY_OFFSET));
setNumericRange('money', 0, 9999999);
},
/* save function */
save:function(){
}
}

View File

@ -0,0 +1,315 @@
{
"food & drink": [
["0xE5", "Water"],
["0xE6", "Milk"],
["0xDD", "Dog Dry Food"],
["0xDE", "Dog Wet Food"],
["0xDF", "Dog Diet Food"],
["0xE0", "Dog Fine Food"],
["0xE1", "Cat Dry Food"],
["0xE2", "Cat Wet Food"],
["0xE3", "Cat Diet Food"],
["0xE4", "Cat Fine Food"],
["0xE7", "Biscuits"],
["0xEB", "Puppy Biscuits"],
["0xE9", "Bone Biscuits"],
["0xEA", "Biscuit Bits"],
["0xE8", "Beef Jerky"],
["0xEC", "Heart Biscuits"],
["0xF2", "Puppy Chews"],
["0xEF", "Fish Biscuits"],
["0xEE", "Fish Jerky"],
["0xF1", "Surprise Biscuits"],
["0xED", "Chicken Jerky"],
["0xF0", "Cat Grass"],
["0x159", "Natural Bristle Brush"],
["0x15A", "Dog Wire Brush"],
["0x15B", "Cat Rubber Brush"],
["0x15C", "Cat Comb"],
["0x157", "Shampoo"],
["0x158", "Premium Shampoo"]
],
"toys": [
["0xA4", "Tennis Ball"],
["0xA6", "Pink Contrast Tennis Ball"],
["0xA5", "Blue Contrast Tennis Ball"],
["0xAE", "White Rubber Bone"],
["0xAF", "Blue Rubber Bone"],
["0xB0", "Pink Rubber Bone"],
["0xB1", "Meat Toy"],
["0xB2", "Rubber Dumb-Bell"],
["0xA7", "Bell Ball"],
["0xA8", "Squeaky Ball"],
["0xA9", "Mushroom Toy"],
["0xAD", "Soft Cube"],
["0xAC", "Burger Toy"],
["0xAA", "Football"],
["0xAB", "Beach Ball"],
["0xBF", "Red Flying Disc"],
["0xC0", "Blue Flying Disc"],
["0xC1", "Orange Flying Disc"],
["0xC2", "Green Flying Disc"],
["0xC5", "White Pro Flying Disc"],
["0xC6", "Pink Pro Flying Disc"],
["0xC4", "Yellow Pro Flying Disc"],
["0xC3", "Light Blue Pro Flying Disc"],
["0xCA", "Lollipop Disc"],
["0xC9", "Pot Lid"],
["0xC8", "Pizza Disc"],
["0xCB", "Hoop"],
["0xC7", "Rainbow Flying Disc"],
["0xFE", "Blue Boomerang"],
["0xFF", "Yellow Boomerang"],
["0x100", "Red Lure"],
["0x101", "Blue Lure"],
["0x102", "Yellow Lure"],
["0x103", "Pink Lure"],
["0x106", "White Pro Lure"],
["0x105", "Green Pro Lure"],
["0x107", "Orange Pro Lure"],
["0x104", "Blue Pro Lure"],
["0x109", "Meat Lure"],
["0x10B", "Bunny Doll Lure"],
["0x10A", "Banana Lure"],
["0x108", "Ballet Shoe Lure"],
["0x10C", "Rainbow Lure"],
["0x122", "Balloon"],
["0x123", "Bubble Blower"],
["0x11B", "Pink Feather Cat Wand"],
["0x11C", "Blue Feater Cat Wand"],
["0x11D", "Green Feather Cat Wand"],
["0x11F", "Dancing Feather Cat Wand"],
["0x11E", "Hopping Mouse Cat Wand"],
["0x121", "Flying Butterfly Cat Wand"],
["0x120", "Jumping Fish Cat Wand"],
["0x124", "Wind-Up Miss Chickie"],
["0x125", "Wind-Up Mr Froggins"],
["0x126", "Wind-Up Sir Nibbles"],
["0xBA", "Mario Kart"],
["0xBC", "Peach Kart"],
["0xBB", "Yoshi Kart"],
["0xBD", "RC Helicopter"],
["0xBE", "Compat Copter"],
["0xB3", "Leather Shoe"],
["0xB4", "High Heel"],
["0xB9", "Stuffed Dog"],
["0xB5", "Tippy Toy"],
["0xB7", "Promie Ring"],
["0xB6", "Gold Bar"],
["0xB8", "Piggy Bank"],
["0x15D", "AR Camera"],
["0x15E", "RoboPup Voucher"],
["0x14A", "Keyboard"],
["0x14B", "Dog & Cat (Disc)"],
["0x14C", "Frantic Frolics (Disc)"],
["0x14D", "Up in the Clouds (Disc)"],
["0x14E", "Surprise Beat (Disc)"],
["0x14F", "Telephone (Disc)"],
["0x151", "Club Dog (Disc)"],
["0x150", "The Flea Waltz (Disc)"],
["0x152", "Danse des mirlitons (Disc)"],
["0x153", "Maple Leaf Rag (Disc)"],
["0x154", "Csikós Post (Disc)"],
["0x155", "Skaters' Waltz (Disc)"],
["0x156", "Thank You"],
["0x127", "Wooden Stick"],
["0x128", "Metal Bolt"],
["0x129", "Rubber Tyre Chunk"],
["0x12A", "Leather Key Ring"],
["0x12B", "Plastic Bottle"],
["0x12C", "Stardust"]
],
"accessories": [
["0x15F", "Red Leather Collar"],
["0x160", "Blue Leather Collar"],
["0x161", "Yellow Leather Collar"],
["0x162", "Green Leather Collar"],
["0x163", "Brown Leather Collar"],
["0x164", "White Leather Collar"],
["0x165", "Black Leather Collar"],
["0x166", "Purple Leather Collar"],
["0x17A", "Black Polka-Dot Collar"],
["0x17C", "Red Polka-Dot Collar"],
["0x17B", "Dot Collar"],
["0x170", "Camo Collar"],
["0x18E", "Rainbow Collar"],
["0x190", "Striped Collar"],
["0x186", "Woven Collar"],
["0x17D", "Flower Collar"],
["0x16F", "Beaded Collar"],
["0x16C", "Hibiscus Flower Lei"],
["0x183", "Star Collar"],
["0x182", "Heart Collar"],
["0x16B", "Lace Necklace"],
["0x177", "Leather Necklacke"],
["0x172", "Red Bell Collar"],
["0x173", "Blue Bell Collar"],
["0x174", "Green Bell Collar"],
["0x175", "Brown Bell Collar"],
["0x17E", "Green Japanese Print Collar"],
["0x180", "Red Japanese Print Collar"],
["0x17F", "Blue Japanese Print Collar"],
["0x168", "Red Spiked Collar"],
["0x167", "Black Spiked Collar"],
["0x189", "Faux-Python Collar"],
["0x188", "Faux-Leopard Collar"],
["0x18A", "Faux-Zebra Collar"],
["0x187", "Faux-Crocodile Collar"],
["0x184", "Southwest Collar"],
["0x178", "Glitzy Collar"],
["0x176", "Metal-Link Necklace"],
["0x18F", "Silver Necklace"],
["0x18D", "Platinum Collar"],
["0x171", "Classy Collar"],
["0x18C", "Pearl Necklace"],
["0x18B", "Black Pearl Necklace"],
["0x179", "Diamond Collar"],
["0x181", "Royal Heirloom Necklace"],
["0x193", "Victory Collar"],
["0x16D", "Kid's Bandanna"],
["0x16A", "Fringed Leather Collar"],
["0x16E", "Bow Tie"],
["0x169", "Chef's Scarf"],
["0x191", "Lady's Scarf"],
["0x192", "Man's Scarf"],
["0x185", "Red Woolly Scarf"],
["0x1C9", "Red Bows"],
["0x1CA", "Yellow Bows"],
["0x1CB", "Red Chequered Bows"],
["0x1CC", "Blue Chequered Bows"],
["0x1CD", "Pink Polka-Dot Bows"],
["0x1CE", "Blue Polka-Dot Bows"],
["0x1CF", "Purple Pearl Bows"],
["0x1D0", "Green Pearl Bows"],
["0x1D1", "Black Striped Bows"],
["0x1D2", "Red Striped Bows"],
["0x1D3", "Tricolour Bows"],
["0x1D4", "Fancy Bow"],
["0x1C8", "Red Rose"],
["0x1C7", "Pink Rose"],
["0x1C5", "Red Hibiscus Flower"],
["0x1C4", "White Hibiscus Flower"],
["0x1C6", "Sunflower"],
["0x19F", "Red Cap"],
["0x19E", "Yellow Cap"],
["0x1A0", "Black Cap"],
["0x1A9", "Newsboy Cap"],
["0x1B1", "Leather Cap"],
["0x196", "Red Woolly Hat"],
["0x194", "Yellow Woolly Hat"],
["0x195", "Black Woolly Hat"],
["0x197", "White Woolly Hat"],
["0x1B0", "Beanie"],
["0x1A3", "Beret"],
["0x1B9", "Sun Visor"],
["0x1B2", "Straw Hat"],
["0x1A5", "White Bucket Hat"],
["0x1A6", "Black Bucket Hat"],
["0x1A7", "Beige Bucket Hat"],
["0x19B", "Brown Safari Hat"],
["0x19C", "White Safari Hat"],
["0x1B7", "Black Top Hat"],
["0x1B8", "White Top Hat"],
["0x1A4", "Fedora"],
["0x1A8", "Bonnet"],
["0x1AC", "Feathered Green Hat"],
["0x1AD", "Feathered Purple Hat"],
["0x1B5", "Pointy Hat"],
["0x1B6", "Santa's Hat"],
["0x1AA", "Chef's Hat"],
["0x1BB", "Viking Hat"],
["0x1B4", "Party Hat"],
["0x19D", "Headpiece"],
["0x1AF", "Stunt Helmet"],
["0x1A2", "Origami Hat"],
["0x19A", "Pompadour Wig"],
["0x1B3", "Bowl Cut Wig"],
["0x1A1", "Rainbow Wig"],
["0x1AE", "Strawberry Hood"],
["0x1BA", "Tiara"],
["0x1AB", "Crown"],
["0x1BC", "Victory Crown"],
["0x198", "Mario's Hat"],
["0x199", "Luigi's Hat"],
["0x1BD", "Toad Hat"],
["0x1BF", "Hero's Hat"],
["0x1C1", "Red Pikmin Hat"],
["0x1C2", "Blue Pikmin Hat"],
["0x1C3", "Yellow Pikmin Hat"],
["0x1C0", "Power Suit Helmet"],
["0x1BE", "Kirby Hat"],
["0x1D5", "Scholar Glasses"],
["0x1E3", "Business Glasses"],
["0x1DA", "Red Fashion Specs"],
["0x1DB", "Black Fashion Specs"],
["0x1DC", "Cop Sunglasses"],
["0x1D6", "White Sunglasses"],
["0x1D7", "Yellow Sunglasses"],
["0x1D8", "Red Sunglasses"],
["0x1DD", "Sporty Sunglasses"],
["0x1E0", "Black Film Star Shades"],
["0x1DF", "Brown Film Star Shades"],
["0x1E1", "Pink Film Star Shades"],
["0x1E2", "Star Shades"],
["0x1D9", "Heart Shades"],
["0x1DE", "Masquerade Mask"],
["0x1E4", "Victory Specs"]
],
"furnitures": [
["0x1E5", "Wicker Dog Bed"],
["0x1FE", "Plush Dog Bed"],
["0x201", "Miniature Bed"],
["0x1F0", "Comfy Couch"],
["0x1F6", "Antique Sofa"],
["0x202", "Fancy Settee"],
["0x1FD", "Leather Sofa"],
["0x1EF", "Armchair"],
["0x1FB", "Designer Chair"],
["0x1F5", "Koopa Shell Chair"],
["0x1FC", "Chest of Drawers"],
["0x1F7", "Antique Chest"],
["0x1EE", "Wooden Cabinet"],
["0x1EC", "Bookcase"],
["0x1ED", "Dresser"],
["0x1E7", "Display Shelves"],
["0x1E8", "Japanese Step Chest"],
["0x203", "Fancy Wardrobe"],
["0x204", "Starship Cabinet"],
["0x1F2", "Dining Table Set"],
["0x1F4", "Mushroom Table Set"],
["0x1EA", "Refrigerator"],
["0x1E9", "Retro Fan"],
["0x205", "Electronic Fan"],
["0x1F1", "Oil Heater"],
["0x1FA", "Fish Bowl"],
["0x1F8", "Arowana Aquarium"],
["0x1EB", "Piano"],
["0x1F3", "Retro TV"],
["0x1F9", "Flat-Screen TV"],
["0x1FF", "Slim Cat Tower"],
["0x200", "Simple Cat Tower"],
["0x1E6", "Kitty Tree House"]
],
"leashes":[
["0x12D", "Red Leash"],
["0x12E", "White Leash"],
["0x12F", "Blue Leash"],
["0x130", "Yellow Leash"],
["0x131", "Green Leash"],
["0x132", "Pink Leash"],
["0x133", "Brown Leash"],
["0x134", "Black Leash"]
],
"skins":[
["0x207", "Active style"],
["0x208", "0=Scandinavian"],
["0x209", "1=Japanese"],
["0x20A", "2=Asian"],
["0x20B", "3=Modern"],
["0x20C", "4=Country"],
["0x20D", "5=Luxerious House"],
["0x20E", "6=Fairy Tale"],
["0x20F", "7=Mario House"],
["0x210", "8=Futuristic"]
]
}

BIN
nintendogs+cats/sysdata.dat Normal file

Binary file not shown.