mirror of
https://github.com/marcrobledo/savegame-editors.git
synced 2025-04-24 16:35:10 +00:00
Merge pull request #450 from magiczocker10/patch-4
Add picross save editor for Jupiter games
This commit is contained in:
commit
67d1280840
82
picross-e/_cache_service_worker.js
Normal file
82
picross-e/_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='picross-e-editor';
|
||||
var PRECACHE_VERSION='v1';
|
||||
var PRECACHE_URLS=[
|
||||
'/savegame-editors/picross-e/','/savegame-editors/picross-e/index.html',
|
||||
'/savegame-editors/picross-e/favicon.png',
|
||||
'/savegame-editors/picross-e/picross-e.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
picross-e/all.dat
Normal file
BIN
picross-e/all.dat
Normal file
Binary file not shown.
89
picross-e/index.html
Normal file
89
picross-e/index.html
Normal file
@ -0,0 +1,89 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Savegame Editor – PICROSS e</title>
|
||||
<meta http-equiv="content-Type" content="text/html; charset=UTF-8"/>
|
||||
<meta name="description" content="A savegame editor for PICROSS e."/>
|
||||
<meta name="keywords" content="html5, savegame, save, editor, hack, exploit, 3ds, PICROSS e, unlock, 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="./picross-e.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/picross-e/_cache_service_worker.js', {scope: '/savegame-editors/picross-e/'});
|
||||
}, 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 Picross e</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/picross-e" 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>
|
||||
|
||||
<template id="picross-template">
|
||||
<h3 class="orange" id="puzzles-header">Placeholder</h3>
|
||||
<div class="container">
|
||||
<div class="row" id="puzzles-placeholder">
|
||||
<div class="columns c1">Puzzle</div>
|
||||
<div class="columns c2">Seconds</div>
|
||||
<div class="columns c1">Medal</div>
|
||||
|
||||
<div class="columns c1">Puzzle</div>
|
||||
<div class="columns c2">Seconds</div>
|
||||
<div class="columns c1">Medal</div>
|
||||
|
||||
<div class="columns c1">Puzzle</div>
|
||||
<div class="columns c2">Seconds</div>
|
||||
<div class="columns c1">Medal</div>
|
||||
|
||||
<div class="columns c1"></div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<!-- THE EDITOR -->
|
||||
<div id="the-editor" class="wrapper hidden">
|
||||
<div id="puzzle-list">
|
||||
<!-- Content will be generated with JavaScript -->
|
||||
</div>
|
||||
<!-- Unlockable content -->
|
||||
<h3 class="orange">Unlockable content</h3>
|
||||
<div class="container">
|
||||
<div class="row" id="unlockables">
|
||||
<!-- Content will be generated with JavaScript -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- Setting -->
|
||||
<h3 class="orange">Settings</h3>
|
||||
<div class="container">
|
||||
<div class="row" id="settings">
|
||||
<!-- Content will be generated with JavaScript -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
186
picross-e/picross-e.js
Normal file
186
picross-e/picross-e.js
Normal file
@ -0,0 +1,186 @@
|
||||
/*
|
||||
PICROSS e for HTML5 Save Editor v20160704
|
||||
by Marc Robledo 2016
|
||||
*/
|
||||
var picrossData = [];
|
||||
var version = 0;
|
||||
var pl;
|
||||
var pt;
|
||||
function convert_to_bit(d) {
|
||||
return ('00000000' + (d >>> 0).toString(2)).slice(-8).split('').reverse();
|
||||
}
|
||||
SavegameEditor={
|
||||
Name:'PICROSS e',
|
||||
Filename:'all.dat',
|
||||
Constants:{},
|
||||
_write_medal:function(e){
|
||||
var current = convert_to_bit(tempFile.readU8(Number(e.target.dataset.offset)));
|
||||
current[e.target.dataset.offset_] = e.target.checked ? '1': '0';
|
||||
tempFile.writeU8(
|
||||
Number(e.target.dataset.offset),
|
||||
parseInt(current.reverse().join(''), 2)
|
||||
);
|
||||
},
|
||||
_write_settings:function(e){
|
||||
if (e.target.type === 'checkbox') {
|
||||
tempFile.writeU8(
|
||||
Number(e.target.dataset.offset),
|
||||
getField(e.target.dataset.id).checked ? 1 : 0
|
||||
);
|
||||
} else {
|
||||
tempFile.writeU8(
|
||||
Number(e.target.dataset.offset),
|
||||
getValue(e.target.dataset.id)
|
||||
);
|
||||
}
|
||||
},
|
||||
_write_puzzle_time:function(e){
|
||||
if (e.target.valueAsNumber > 86399000) {return;} // Filter invalid values
|
||||
tempFile.writeU32(
|
||||
Number(e.target.dataset.offset),
|
||||
Math.floor(e.target.valueAsNumber / 1000) * 60
|
||||
);
|
||||
},
|
||||
|
||||
/* check if savegame is valid */
|
||||
checkValidSavegame:function(){
|
||||
if (tempFile.fileSize==740) { // Picross e
|
||||
version = 0;
|
||||
return true;
|
||||
} else if (tempFile.fileSize==1880) { // Picross e2
|
||||
version = 1;
|
||||
return true;
|
||||
} else if (tempFile.fileSize==828) { // Picross e3
|
||||
version = 2;
|
||||
return true;
|
||||
} else if (tempFile.fileSize==1436) { // Picross e4
|
||||
version = 3;
|
||||
return true;
|
||||
} else if (tempFile.fileSize==1688) { // Picross e5
|
||||
version = 4;
|
||||
return true;
|
||||
} else if (tempFile.fileSize==2228) { // Picross e6
|
||||
version = 5;
|
||||
return true;
|
||||
} else if (tempFile.fileSize==2328) { // Picross e7 - e9
|
||||
version = 6;
|
||||
return true;
|
||||
} else if (tempFile.fileSize==988) { // Club Nintendo Picross
|
||||
version = 7;
|
||||
return true;
|
||||
} else if (tempFile.fileSize==920) { // My Nintendo PICROSS
|
||||
version = 8;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
_generateList:function(){
|
||||
var offset = picrossData[version].modes_start || 0;
|
||||
for (var difficulty of picrossData[version].modes) {
|
||||
var c = pt.content.cloneNode(true);
|
||||
c.getElementById('puzzles-header').innerText = difficulty[2];
|
||||
c.getElementById('puzzles-header').id='';
|
||||
c.getElementById('puzzles-placeholder').id='puzzles-'+difficulty[1];
|
||||
pl.append(c);
|
||||
var ce = get('puzzles-' + difficulty[1]);
|
||||
for (var i = difficulty[3]; i < difficulty[4]; i++) {
|
||||
var date = new Date(0);
|
||||
date.setSeconds(Math.floor(tempFile.readU32(4*i+offset)/60));
|
||||
var timeString = date.toISOString().substring(11, 19);
|
||||
var time_ele = document.createElement('input');
|
||||
time_ele.type='time';
|
||||
time_ele.min='00:00:00';
|
||||
time_ele.max='23:59:59';
|
||||
time_ele.step='1';
|
||||
time_ele.value=timeString;
|
||||
time_ele.dataset.offset=4*i+offset;
|
||||
time_ele.addEventListener('change', SavegameEditor._write_puzzle_time);
|
||||
var name = difficulty[0] + ('0' + String(i-difficulty[3]+1)).slice(-2);
|
||||
ce.append(
|
||||
col(1, span(name)),
|
||||
col(2, time_ele)
|
||||
);
|
||||
if (picrossData[version].medals_offset) {
|
||||
var tmp = Math.floor(i / 8);
|
||||
var box = checkbox('medal_'+name, '');
|
||||
box.dataset.offset=Number(picrossData[version].medals_offset) + tmp;
|
||||
box.dataset.offset_ = i-tmp*8;
|
||||
box.addEventListener('change', SavegameEditor._write_medal);
|
||||
box.checked = convert_to_bit(tempFile.readU8(box.dataset.offset))[box.dataset.offset_]==='1' ? 'checked' : '';
|
||||
ce.append(col(1, box));
|
||||
} else {
|
||||
ce.append(col(1, span('')));
|
||||
}
|
||||
if (i%3===2){
|
||||
ce.append(col(1, span('')));
|
||||
}
|
||||
}
|
||||
}
|
||||
var settings_ele = document.getElementById('settings');
|
||||
var s_offset = picrossData[version].settings_offset;
|
||||
for (var setting in s_offset) {
|
||||
var setting_data = s_offset[setting];
|
||||
if (setting_data[0]==='checkbox') {
|
||||
var checkbox_ele=checkbox('settings-'+setting, 'checked');
|
||||
checkbox_ele.dataset.offset=setting_data[3];
|
||||
checkbox_ele.dataset.id='settings-'+setting;
|
||||
var label_ele=label('checkbox-settings-'+setting, setting_data[1]);
|
||||
settings_ele.append(
|
||||
col(8, label_ele),
|
||||
col(4, checkbox_ele)
|
||||
);
|
||||
checkbox_ele.addEventListener('change', SavegameEditor._write_settings);
|
||||
getField('checkbox-settings-'+setting).checked = tempFile.readU8(Number(setting_data[3]))>0;
|
||||
} else if (setting_data[0]==='select'){
|
||||
var select_ele=select('settings-'+setting, picrossData[version][setting_data[2]], SavegameEditor._write_settings);
|
||||
select_ele.dataset.offset=setting_data[3];
|
||||
select_ele.dataset.id='settings-'+setting;
|
||||
settings_ele.append(
|
||||
col(8, span(setting_data[1])),
|
||||
col(4, select_ele)
|
||||
);
|
||||
setValue('settings-'+setting, tempFile.readU8(Number(setting_data[3])));
|
||||
}
|
||||
}
|
||||
|
||||
var unlockables_ele = document.getElementById('unlockables');
|
||||
var unlockable_content = picrossData[version].unlockables || [];
|
||||
for (var index=0; index<unlockable_content.length; index++) {
|
||||
var checkbox_ele_=checkbox('unlockable-'+index, '');
|
||||
unlockables_ele.append(
|
||||
col(8, label('checkbox-unlockable-'+index, unlockable_content[index][0])),
|
||||
col(4, checkbox_ele_)
|
||||
);
|
||||
checkbox_ele_.dataset.offset=unlockable_content[index][1];
|
||||
checkbox_ele_.dataset.id='unlockable-'+index;
|
||||
checkbox_ele_.addEventListener('change', SavegameEditor._write_settings);
|
||||
checkbox_ele_.checked = tempFile.readU8(Number(unlockable_content[index][1])) === 1 ? 'checked' : '';
|
||||
}
|
||||
},
|
||||
preload:function(){
|
||||
pl = get('puzzle-list');
|
||||
pt = get('picross-template');
|
||||
pl.innerHTML = '';
|
||||
fetch('/savegame-editors/picross-e/versions.json')
|
||||
.then(function(response) {
|
||||
return response.json();
|
||||
}).then(function(data) {
|
||||
picrossData = data;
|
||||
}).catch(function(error) {
|
||||
console.log('[Picross Save Editor]', error);
|
||||
});
|
||||
},
|
||||
|
||||
/* load function */
|
||||
load:function(){
|
||||
tempFile.fileName='all.dat';
|
||||
tempFile.littleEndian=true;
|
||||
|
||||
setTimeout(SavegameEditor._generateList, 300);
|
||||
},
|
||||
|
||||
|
||||
/* save function */
|
||||
save:function(){
|
||||
}
|
||||
};
|
320
picross-e/versions.json
Normal file
320
picross-e/versions.json
Normal file
@ -0,0 +1,320 @@
|
||||
[
|
||||
{
|
||||
"_comment": "PICROSS e",
|
||||
"bgm_effects": [
|
||||
{"value":0, "name":"OFF"},
|
||||
{"value":1, "name":"1"},
|
||||
{"value":2, "name":"2"},
|
||||
{"value":3, "name":"3"},
|
||||
{"value":4, "name":"4"},
|
||||
{"value":5, "name":"5"}
|
||||
],
|
||||
"controls": [
|
||||
{"value":0, "name":"Stylus Controls"},
|
||||
{"value":1, "name":"Button Controls"}
|
||||
],
|
||||
"modes":[
|
||||
["E", "easy", "Easy Mode", 0, 15],
|
||||
["N", "normal", "Normal Mode", 15, 75],
|
||||
["F", "free", "Free Mode", 75, 135],
|
||||
["X", "extra", "Extra", 135, 150]
|
||||
],
|
||||
"settings_offset": {
|
||||
"control_method": ["select", "Control Method", "controls", "0x258"],
|
||||
"hint_number": ["checkbox", "Hint Number Auto-Check", "", "0x259"],
|
||||
"navigation": ["checkbox", "Navigation", "", "0x25A"],
|
||||
"bgm": ["select", "BGM", "bgm_effects", "0x25D"],
|
||||
"effects": ["select", "Effects", "bgm_effects", "0x25E"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_comment": "PICROSS e2",
|
||||
"bgm_effects": [
|
||||
{"value":0, "name":"OFF"},
|
||||
{"value":1, "name":"1"},
|
||||
{"value":2, "name":"2"},
|
||||
{"value":3, "name":"3"},
|
||||
{"value":4, "name":"4"},
|
||||
{"value":5, "name":"5"}
|
||||
],
|
||||
"controls": [
|
||||
{"value":0, "name":"Stylus Controls"},
|
||||
{"value":1, "name":"Button Controls"}
|
||||
],
|
||||
"modes":[
|
||||
["E", "easy", "Easy Mode", 0, 15],
|
||||
["N", "normal", "Normal Mode", 15, 75],
|
||||
["F", "free", "Free Mode", 75, 135],
|
||||
["X", "extra", "EXTRA", 135, 150],
|
||||
["M", "micross", "Micross", 150, 155]
|
||||
],
|
||||
"settings_offset": {
|
||||
"control_method": ["select", "Control Method", "controls", "0x26C"],
|
||||
"hint_number": ["checkbox", "Hint Number Auto-Check", "", "0x26D"],
|
||||
"navigation": ["checkbox", "Navigation", "", "0x26E"],
|
||||
"bgm": ["select", "BGM", "bgm_effects", "0x271"],
|
||||
"effects": ["select", "Effects", "bgm_effects", "0x272"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_comment": "PICROSS e3",
|
||||
"bgm_effects": [
|
||||
{"value":0, "name":"OFF"},
|
||||
{"value":1, "name":"1"},
|
||||
{"value":2, "name":"2"},
|
||||
{"value":3, "name":"3"},
|
||||
{"value":4, "name":"4"},
|
||||
{"value":5, "name":"5"}
|
||||
],
|
||||
"controls": [
|
||||
{"value":0, "name":"Stylus Controls"},
|
||||
{"value":1, "name":"Button Controls"}
|
||||
],
|
||||
"modes":[
|
||||
["E", "easy", "Easy Mode", 0, 15],
|
||||
["N", "normal", "Normal Mode", 15, 45],
|
||||
["F", "free-mode", "Free Mode", 60, 105],
|
||||
["X", "extra", "EXTRA", 45, 60],
|
||||
["M", "mega-picross", "Mega Picross", 105, 135]
|
||||
],
|
||||
"settings_offset": {
|
||||
"control_method": ["select", "Control Method", "controls", "0x258"],
|
||||
"hint_number": ["checkbox", "Hint Number Auto-Check", "", "0x259"],
|
||||
"hint_roulette": ["checkbox", "Hint Roulete", "", "0x25A"],
|
||||
"normal": ["checkbox", "Normal", "", "0x25B"],
|
||||
"navigation": ["checkbox", "Navigation", "", "0x25C"],
|
||||
"bgm": ["select", "BGM", "bgm_effects", "0x25F"],
|
||||
"effects": ["select", "Effects", "bgm_effects", "0x260"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_comment": "PICROSS e4",
|
||||
"bgm_effects": [
|
||||
{"value":0, "name":"OFF"},
|
||||
{"value":1, "name":"1"},
|
||||
{"value":2, "name":"2"},
|
||||
{"value":3, "name":"3"},
|
||||
{"value":4, "name":"4"},
|
||||
{"value":5, "name":"5"}
|
||||
],
|
||||
"controls": [
|
||||
{"value":0, "name":"Stylus Controls"},
|
||||
{"value":1, "name":"Button Controls"}
|
||||
],
|
||||
"modes":[
|
||||
["P", "picross", "Picross", 0, 105],
|
||||
["µ", "micross", "Micross", 105, 107],
|
||||
["M", "mega-picross", "Mega Picross", 107, 152],
|
||||
["S", "special-puzzle", "Special Puzzles", 152, 167]
|
||||
],
|
||||
"rules": [
|
||||
{"value":0, "name":"Free"},
|
||||
{"value":1, "name":"Normal"}
|
||||
],
|
||||
"settings_offset": {
|
||||
"control_method": ["select", "Control Method", "controls", "0x29C"],
|
||||
"hint_number": ["checkbox", "Hint Number Auto-Check", "", "0x29D"],
|
||||
"hint_roulette": ["checkbox", "Hint Roulette", "", "0x29E"],
|
||||
"rules": ["select", "Rules", "rules", "0x29F"],
|
||||
"navigation": ["checkbox", "Navigation", "", "0x2A0"],
|
||||
"bgm": ["select", "BGM", "bgm_effects", "0x2A3"],
|
||||
"effects": ["select", "Effects", "bgm_effects", "0x2A4"]
|
||||
},
|
||||
"unlockables":[
|
||||
["S001 - S005 (PICROSS e)", "0x597"],
|
||||
["S006 - S010 (PICROSS e2)", "0x598"],
|
||||
["S011 - S015 (PICROSS e3)", "0x599"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"_comment": "PICROSS e5",
|
||||
"bgm_effects": [
|
||||
{"value":0, "name":"OFF"},
|
||||
{"value":1, "name":"1"},
|
||||
{"value":2, "name":"2"},
|
||||
{"value":3, "name":"3"},
|
||||
{"value":4, "name":"4"},
|
||||
{"value":5, "name":"5"}
|
||||
],
|
||||
"controls": [
|
||||
{"value":0, "name":"Stylus Controls"},
|
||||
{"value":1, "name":"Button Controls"}
|
||||
],
|
||||
"modes":[
|
||||
["P", "picross", "Picross", 0, 120],
|
||||
["µ", "micross", "Micross", 120, 123],
|
||||
["M", "mega-picross", "Mega Picross", 123, 153],
|
||||
["S", "special-puzzle", "Special Puzzles", 153, 168]
|
||||
],
|
||||
"rules": [
|
||||
{"value":0, "name":"Free"},
|
||||
{"value":1, "name":"Normal"}
|
||||
],
|
||||
"settings_offset": {
|
||||
"control_method": ["select", "Control Method", "controls", "0x2A0"],
|
||||
"hint_number": ["checkbox", "Hint Number Auto-Check", "", "0x2A1"],
|
||||
"hint_roulette": ["checkbox", "Hint Roulette", "", "0x2A2"],
|
||||
"rules": ["select", "Rules", "rules", "0x2A3"],
|
||||
"navigation": ["checkbox", "Navigation", "", "0x2A4"],
|
||||
"bgm": ["select", "BGM", "bgm_effects", "0x2A7"],
|
||||
"effects": ["select", "Effects", "bgm_effects", "0x2A8"]
|
||||
},
|
||||
"unlockables":[
|
||||
["S001 - S005 (PICROSS e)", "0x693"],
|
||||
["S006 - S010 (PICROSS e2)", "0x694"],
|
||||
["S011 - S015 (PICROSS e3)", "0x695"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"_comment": "PICROSS e6",
|
||||
"animations": [
|
||||
{"value":0, "name":"Plain"},
|
||||
{"value":1, "name":"Turn"},
|
||||
{"value":2, "name":"Break"}
|
||||
],
|
||||
"bgm_effects": [
|
||||
{"value":0, "name":"OFF"},
|
||||
{"value":1, "name":"1"},
|
||||
{"value":2, "name":"2"},
|
||||
{"value":3, "name":"3"},
|
||||
{"value":4, "name":"4"},
|
||||
{"value":5, "name":"5"}
|
||||
],
|
||||
"controls": [
|
||||
{"value":0, "name":"Stylus Controls"},
|
||||
{"value":1, "name":"Button Controls"}
|
||||
],
|
||||
"modes":[
|
||||
["P", "picross", "Picross", 0, 150],
|
||||
["M", "mega-picross", "Mega Picross", 150, 285],
|
||||
["µ", "micross", "Micross", 285, 288],
|
||||
["S", "special-puzzle", "Special Puzzles", 288, 303]
|
||||
],
|
||||
"rules": [
|
||||
{"value":0, "name":"Free"},
|
||||
{"value":1, "name":"Normal"}
|
||||
],
|
||||
"settings_offset": {
|
||||
"control_method": ["select", "Control Method", "controls", "0x4BC"],
|
||||
"hint_number": ["checkbox", "Hint Number Auto-Check", "", "0x4BD"],
|
||||
"hint_roulette": ["checkbox", "Hint Roulette", "", "0x4BE"],
|
||||
"rules": ["select", "Rules", "rules", "0x4BF"],
|
||||
"navigation": ["checkbox", "Navigation", "", "0x4C0"],
|
||||
"bgm": ["select", "BGM", "bgm_effects", "0x4C3"],
|
||||
"effects": ["select", "Effects", "bgm_effects", "0x4C4"],
|
||||
"animations": ["select", "Animations", "animations", "0x4C5"]
|
||||
},
|
||||
"unlockables":[
|
||||
["S001 - S005 (PICROSS e)", "0x8AF"],
|
||||
["S006 - S010 (PICROSS e2)", "0x8B0"],
|
||||
["S011 - S015 (PICROSS e3)", "0x8B1"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"_comment": "PICROSS e7 - e9",
|
||||
"animations": [
|
||||
{"value":0, "name":"Plain"},
|
||||
{"value":1, "name":"Turn"},
|
||||
{"value":2, "name":"Break"}
|
||||
],
|
||||
"bgm_effects": [
|
||||
{"value":0, "name":"OFF"},
|
||||
{"value":1, "name":"1"},
|
||||
{"value":2, "name":"2"},
|
||||
{"value":3, "name":"3"},
|
||||
{"value":4, "name":"4"},
|
||||
{"value":5, "name":"5"}
|
||||
],
|
||||
"controls": [
|
||||
{"value":0, "name":"Stylus Controls 1"},
|
||||
{"value":1, "name":"Stylus Controls 2"},
|
||||
{"value":2, "name":"Button Controls"}
|
||||
],
|
||||
"medals_offset": "0x4F8",
|
||||
"modes":[
|
||||
["P", "picross", "Picross", 0, 150],
|
||||
["M", "mega-picross", "Mega Picross", 153, 303],
|
||||
["µ", "micross", "Micross", 150, 153],
|
||||
["S", "special-puzzle", "Special Puzzles", 303, 318]
|
||||
],
|
||||
"rules": [
|
||||
{"value":0, "name":"Free"},
|
||||
{"value":1, "name":"Normal"}
|
||||
],
|
||||
"settings_offset": {
|
||||
"control_method": ["select", "Control Method", "controls", "0x520"],
|
||||
"hint_number": ["checkbox", "Hint Number Auto-Check", "", "0x521"],
|
||||
"hint_roulette": ["checkbox", "Hint Roulette", "", "0x522"],
|
||||
"rules": ["select", "Rules", "rules", "0x523"],
|
||||
"navigation": ["checkbox", "Navigation", "", "0x524"],
|
||||
"bgm": ["select", "BGM", "bgm_effects", "0x527"],
|
||||
"effects": ["select", "Effects", "bgm_effects", "0x528"],
|
||||
"animations": ["select", "Animations", "animations", "0x529"]
|
||||
},
|
||||
"unlockables":[
|
||||
["S001 - S005 (PICROSS e)", "0x913"],
|
||||
["S006 - S010 (PICROSS e2)", "0x914"],
|
||||
["S011 - S015 (PICROSS e3)", "0x915"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"_comment": "Club Nintendo Picross",
|
||||
"bgm_effects": [
|
||||
{"value":0, "name":"OFF"},
|
||||
{"value":1, "name":"1"},
|
||||
{"value":2, "name":"2"},
|
||||
{"value":3, "name":"3"},
|
||||
{"value":4, "name":"4"},
|
||||
{"value":5, "name":"5"}
|
||||
],
|
||||
"controls": [
|
||||
{"value":0, "name":"Stylus Controls"},
|
||||
{"value":1, "name":"Button Controls"}
|
||||
],
|
||||
"modes":[
|
||||
["E", "easy", "Easy Mode", 0, 11],
|
||||
["N", "normal", "Normal Mode", 11, 41],
|
||||
["F", "free", "Free Mode", 41, 71],
|
||||
["X", "extra", "EXTRA", 71, 85],
|
||||
["M", "micross", "Micross", 86, 88]
|
||||
],
|
||||
"settings_offset": {
|
||||
"control_method": ["select", "Control Method", "controls", "0x160"],
|
||||
"hint_number": ["checkbox", "Hint Number Auto-Check", "", "0x161"],
|
||||
"hint_roulette": ["checkbox", "Hint Roulette", "", "0x162"],
|
||||
"navigation": ["checkbox", "Navigation", "", "0x163"],
|
||||
"bgm": ["select", "BGM", "bgm_effects", "0x166"],
|
||||
"effects": ["select", "SE", "bgm_effects", "0x167"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_comment": "My Nintendo PICROSS",
|
||||
"bgm_effects": [
|
||||
{"value":0, "name":"OFF"},
|
||||
{"value":1, "name":"1"},
|
||||
{"value":2, "name":"2"},
|
||||
{"value":3, "name":"3"},
|
||||
{"value":4, "name":"4"},
|
||||
{"value":5, "name":"5"}
|
||||
],
|
||||
"controls": [
|
||||
{"value":0, "name":"Stylus Controls"},
|
||||
{"value":1, "name":"Button Controls"}
|
||||
],
|
||||
"modes":[
|
||||
["", "picross", "Picross", 0, 45],
|
||||
["", "mega", "Mega Picross", 46, 91],
|
||||
["", "micross", "Micross", 45, 46]
|
||||
],
|
||||
"modes_start":16,
|
||||
"settings_offset": {
|
||||
"control_method": ["select", "Control Method", "controls", "0x194"],
|
||||
"answer_autocheck": ["checkbox", "Answer Auto-Check", "", "0x197"],
|
||||
"hint_number": ["checkbox", "Hint Number Auto-Check", "", "0x195"],
|
||||
"hint_roulette": ["checkbox", "Hint Roulette", "", "0x196"],
|
||||
"navigation": ["checkbox", "Navigation", "", "0x198"],
|
||||
"bgm": ["select", "BGM", "bgm_effects", "0x19B"],
|
||||
"effects": ["select", "Effects", "bgm_effects", "0x19C"]
|
||||
}
|
||||
}
|
||||
]
|
Loading…
x
Reference in New Issue
Block a user