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

Replace savedata + fix offset and point issue + added skills

This commit is contained in:
magiczocker10 2024-07-10 19:25:51 +02:00 committed by GitHub
parent 2e60668453
commit bee6f76d3a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 139 additions and 54 deletions

Binary file not shown.

View File

@ -27,15 +27,15 @@
<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 3D: Round 2</small></h1>
<div class="six columns header-buttons text-right">
<h1 class="columns c6 text-left"><img src="favicon.png" /> Savegame Editor <small>for Picross 3D: Round 2</small></h1>
<div class="columns c6 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-3d-round-2" 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">
<div class="columns c12 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>
@ -50,32 +50,32 @@
<h3 class="orange">Settings</h3>
<div class="container">
<div class="row">
<div class="five columns">Name</div><div class="five columns" id="container-profile-name"></div>
<div class="five columns">Background</div><div class="five columns" id="container-background"></div>
<div class="five columns">BGM</div><div class="five columns" id="container-bgm-music"></div>
<div class="five columns">Difficulty</div><div class="five columns" id="container-difficulty"></div>
<div class="five columns">Help</div><div class="five columns" id="container-help"></div>
<div class="five columns">Bomb</div><div class="five columns" id="container-bomb"></div>
<div class="columns c5">Name</div><div class="columns c5" id="container-profile-name"></div>
<div class="columns c5">Background</div><div class="columns c5" id="container-background"></div>
<div class="columns c5">BGM</div><div class="columns c5" id="container-bgm-music"></div>
<div class="columns c5">Difficulty</div><div class="columns c5" id="container-difficulty"></div>
<div class="columns c5">Help</div><div class="columns c5" id="container-help"></div>
<div class="columns c5">Bomb</div><div class="columns c5" id="container-bomb"></div>
</div>
</div>
<h3 class="orange">Controls - Cross</h3>
<div class="container">
<div class="row">
<div class="five columns">Up / Y</div><div class="five columns" id="container-cross-up"></div>
<div class="five columns">Left / A</div><div class="five columns" id="container-cross-left"></div>
<div class="five columns">Right / X</div><div class="five columns" id="container-cross-right"></div>
<div class="five columns">Bottom / B</div><div class="five columns" id="container-cross-bottom"></div>
<div class="five columns">L / R</div><div class="five columns" id="container-cross-lr"></div>
<div class="columns c5">Up / Y</div><div class="columns c5" id="container-cross-up"></div>
<div class="columns c5">Left / A</div><div class="columns c5" id="container-cross-left"></div>
<div class="columns c5">Right / X</div><div class="columns c5" id="container-cross-right"></div>
<div class="columns c5">Bottom / B</div><div class="columns c5" id="container-cross-bottom"></div>
<div class="columns c5">L / R</div><div class="columns c5" id="container-cross-lr"></div>
</div>
</div>
<h3 class="orange">Controls - Circle</h3>
<div class="container">
<div class="row">
<div class="five columns">Up</div><div class="five columns" id="container-circle-up"></div>
<div class="five columns">Left</div><div class="five columns" id="container-circle-left"></div>
<div class="five columns">Right</div><div class="five columns" id="container-circle-right"></div>
<div class="five columns">Bottom left</div><div class="five columns" id="container-circle-bottom-left"></div>
<div class="five columns">Bottom right</div><div class="five columns" id="container-circle-bottom-right"></div>
<div class="columns c5">Up</div><div class="columns c5" id="container-circle-up"></div>
<div class="columns c5">Left</div><div class="columns c5" id="container-circle-left"></div>
<div class="columns c5">Right</div><div class="columns c5" id="container-circle-right"></div>
<div class="columns c5">Bottom left</div><div class="columns c5" id="container-circle-bottom-left"></div>
<div class="columns c5">Bottom right</div><div class="columns c5" id="container-circle-bottom-right"></div>
</div>
</div>
@ -83,24 +83,35 @@
<h3 class="orange">Levels</h3>
<div class="container">
<div class="row" id="row-levels">
<div class="one columns">ID</div>
<div class="two columns">Name</div>
<div class="two columns">Status</div>
<div class="two columns">Difficulty</div>
<div class="one columns">Mistakes</div>
<div class="two columns">Time</div>
<div class="two columns">Points</div>
<div class="columns c1">ID</div>
<div class="columns c2">Name</div>
<div class="columns c2">Status</div>
<div class="columns c2">Difficulty</div>
<div class="columns c1">Mistakes</div>
<div class="columns c2">Time</div>
<div class="columns c2">Points</div>
</div>
</div>
<!-- Tips -->
<!-- Tutorials -->
<h3 class="orange">Tutorials</h3>
<div class="container">
<div class="row" id="row-tutorials">
<div class="one columns">ID</div>
<div class="four columns">Name</div>
<div class="four columns">Status</div>
<div class="three columns">Difficulty</div>
<div class="columns c1">ID</div>
<div class="columns c4">Name</div>
<div class="columns c4">Status</div>
<div class="columns c3">Difficulty</div>
</div>
</div>
<!-- Skills -->
<h3 class="orange">Skills</h3>
<div class="container">
<div class="row" id="row-skills">
<div class="columns c1">ID</div>
<div class="columns c4">Name</div>
<div class="columns c4">Status</div>
<div class="columns c3">Difficulty</div>
</div>
</div>

View File

@ -4,6 +4,7 @@
*/
var puzzles = [];
var tutorials = [];
var skills = [];
var reg = /\d+/;
SavegameEditor={
@ -178,12 +179,16 @@ SavegameEditor={
setValue('levels_' + entry[0] + '_difficulty', tempFile.readU8(profileStartOffset + entry[2]+7));
setValue('levels_' + entry[0] + '_errors', tempFile.readU8(profileStartOffset + entry[2] + 8));
setValue('levels_' + entry[0] + '_time', tempFile.readU16(profileStartOffset + entry[2] + 12));
setValue('levels_' + entry[0] + '_points', tempFile.readU8(profileStartOffset + entry[2] + 4));
setValue('levels_' + entry[0] + '_points', tempFile.readU16(profileStartOffset + entry[2] + 4));
}
for (entry of tutorials) {
setValue('tutorials_' + entry[0] + '_status', tempFile.readU8(profileStartOffset + entry[2]));
setValue('tutorials_' + entry[0] + '_difficulty', tempFile.readU8(profileStartOffset + entry[2]+7));
}
for (entry of skills) {
setValue('skills_' + entry[0] + '_status', tempFile.readU8(profileStartOffset + entry[2]));
setValue('skills_' + entry[0] + '_difficulty', tempFile.readU8(profileStartOffset + entry[2]+7));
}
},
_write_level_errors:function(e){
var index = Number((e.target.id).match(reg)[0]);
@ -204,7 +209,7 @@ SavegameEditor={
_write_level_points:function(e){
var index = Number((e.target.id).match(reg)[0]);
var offset = SavegameEditor._getProfileOffset()+0x220+index*16+4;
tempFile.writeU8(
tempFile.writeU16(
offset,
getValue(e.target.id)
);
@ -299,6 +304,7 @@ SavegameEditor={
var counter = 0;
var rt = get('row-tutorials');
var rl = get('row-levels');
var rs = get('row-skills');
for (var entry of data) {
if (entry.ID.startsWith('No.')) {
puzzles.push([counter, entry, 0x220 + counter * 16]);
@ -314,7 +320,7 @@ SavegameEditor={
getField('number-levels_'+counter+'_errors').addEventListener('change', SavegameEditor._write_level_errors);
getField('number-levels_'+counter+'_time').addEventListener('change', SavegameEditor._write_level_time);
getField('number-levels_'+counter+'_points').addEventListener('change', SavegameEditor._write_level_points);
} else {
} else if (entry.ID.startsWith('Tutorial')) {
tutorials.push([counter, entry, 0x220 + counter * 16]);
rt.append(
col(1, span(entry.ID)),
@ -322,6 +328,14 @@ SavegameEditor={
col(4, select('tutorials_'+counter+'_status', SavegameEditor.Constants.LEVEL_STATUS, SavegameEditor._write_level_status)),
col(3, select('tutorials_'+counter+'_difficulty', SavegameEditor.Constants.DIFFICULTIES, SavegameEditor._write_level_difficulty))
);
} else if (entry.ID.startsWith('Skill')) {
skills.push([counter, entry, 0x220 + counter * 16]);
rs.append(
col(1, span(entry.ID)),
col(4, span(entry.NAME)),
col(4, select('skills_'+counter+'_status', SavegameEditor.Constants.LEVEL_STATUS, SavegameEditor._write_level_status)),
col(3, select('skills_'+counter+'_difficulty', SavegameEditor.Constants.DIFFICULTIES, SavegameEditor._write_level_difficulty))
);
}
counter++;
}

View File

@ -147,6 +147,46 @@
"ID": "No. 030",
"NAME": "Solar System"
},
{
"ID": "Skill 1",
"NAME": "Continuity Search"
},
{
"ID": "Skill 2",
"NAME": "Starting at the Ends"
},
{
"ID": "Skill 3",
"NAME": "Out of Reach"
},
{
"ID": "Skill 4",
"NAME": "Dual Continuity Search"
},
{
"ID": "Skill 5",
"NAME": "Lonely Cube"
},
{
"ID": "Skill 6",
"NAME": "Lonely Cube 2"
},
{
"ID": "Skill 7",
"NAME": "Circles of the Ends"
},
{
"ID": "Skill 8",
"NAME": "Triplets Divided"
},
{
"ID": "Skill 9",
"NAME": "Squares on the Ends"
},
{
"ID": "Skill 10",
"NAME": "Alternating"
},
{
"ID": "No. 031",
"NAME": "Skull"
@ -235,6 +275,46 @@
"ID": "No. 052",
"NAME": "The Statue of Liberty"
},
{
"ID": "Skill 11",
"NAME": "Continuity Search 2"
},
{
"ID": "Skill 12",
"NAME": "Starting at the Ends 2"
},
{
"ID": "Skill 13",
"NAME": "Dual Dilemma"
},
{
"ID": "Skill 14",
"NAME": "Dual Continuity Search 2"
},
{
"ID": "Skill 15",
"NAME": "Starting at the Ends 3"
},
{
"ID": "Skill 16",
"NAME": "Colorful Crossing"
},
{
"ID": "Skill 17",
"NAME": "Positive Painting"
},
{
"ID": "Skill 18",
"NAME": "The Process of Elimination"
},
{
"ID": "Skill 19",
"NAME": "Logical Leap"
},
{
"ID": "Skill 20",
"NAME": "Lonely Cube 3"
},
{
"ID": "No. 053",
"NAME": "Pliers"
@ -295,10 +375,6 @@
"ID": "No. 067",
"NAME": "Loading Dock"
},
{
"ID": "No. 068",
"NAME": "Royal Carriage"
},
{
"ID": "No. 069",
"NAME": "Part A"
@ -535,10 +611,6 @@
"ID": "No. 127",
"NAME": "Marlin"
},
{
"ID": "No. 128",
"NAME": "Japanese Castle"
},
{
"ID": "No. 129",
"NAME": "Part A"
@ -755,10 +827,6 @@
"ID": "No. 182",
"NAME": "Horse"
},
{
"ID": "No. 183",
"NAME": "Gulliver"
},
{
"ID": "No. 184",
"NAME": "Part A"
@ -983,10 +1051,6 @@
"ID": "No. 239",
"NAME": "Totem Pole"
},
{
"ID": "No. 240",
"NAME": "Pit Stop"
},
{
"ID": "No. 241",
"NAME": "Part A"
@ -1335,10 +1399,6 @@
"ID": "No. 327",
"NAME": "Fox"
},
{
"ID": "No. 328",
"NAME": "Circus Train"
},
{
"ID": "No. 329",
"NAME": "Part A"