1
0
Fork 0
mirror of https://github.com/marcrobledo/RomPatcher.js.git synced 2025-06-27 16:25:54 +00:00

GUI redesign among other fixes

This commit is contained in:
Marc Robledo 2018-04-28 15:57:54 +02:00
parent eb40a592b5
commit a56fa9d4e8
13 changed files with 251 additions and 314 deletions

View file

@ -1,4 +1,4 @@
/* RomPatcher.js v20180427 - Marc Robledo 2016-2018 - http://www.marcrobledo.com/license */
/* RomPatcher.js v20180428 - Marc Robledo 2016-2018 - http://www.marcrobledo.com/license */
var MAX_ROM_SIZE=33554432;
var romFile, headeredRomFile, unheaderedRomFile, patch, romFile1, romFile2, tempFile;
/* Shortcuts */
@ -18,7 +18,6 @@ addEvent(window,'load',function(){
el('input-file-patch').value='';
el('input-file-rom1').value='';
el('input-file-rom2').value='';
el('input-file-flip').value='';
addEvent(el('input-file-rom'), 'change', function(){
romFile=new MarcBinFile(this, function(){
@ -40,6 +39,7 @@ addEvent(window,'load',function(){
}
updateChecksums(romFile);
validateSource();
});
});
addEvent(el('input-file-patch'), 'change', function(){
@ -67,6 +67,7 @@ addEvent(window,'load',function(){
updateChecksums(romFile);
validateSource();
});
addEvent(el('checkbox-addheader'), 'change', function(){
@ -82,7 +83,10 @@ addEvent(window,'load',function(){
else
romFile=unheaderedRomFile;
validateSource();
});
setTab(1);
});
function isSnesRom(fileName){return /\.(smc|sfc|fig|swc)$/.test(fileName)}
@ -91,7 +95,7 @@ function isHeadered(fileSize,headerSize){return isPowerOfTwo(fileSize-headerSize
function updateChecksums(file){
el('rom-info').style.display='block';
el('rom-info').style.display='flex';
sha1(file);
var crc32str=crc32(file).toString(16);
@ -101,6 +105,13 @@ function updateChecksums(file){
el('md5').innerHTML=md5(file);
}
function validateSource(){
if(patch && romFile && typeof patch.validateSource !== 'undefined'){
el('crc32').className=patch.validateSource(romFile)?'valid':'invalid';
}else{
el('crc32').className='';
}
}
function _readPatchFile(){
@ -119,6 +130,7 @@ function _readPatchFile(){
}*/else {
MarcDialogs.alert('Invalid IPS/UPS/APS/BPS file');
}
validateSource();
}
function openPatchFile(f){tempFile=new MarcBinFile(f, _readPatchFile)}
function applyPatchFile(p,r){
@ -141,36 +153,51 @@ function applyPatchFile(p,r){
function createPatchFile(){
var mode=el('patch-type').value;
if(!romFile1 || !romFile2){
MarcDialogs.alert('No original/modified ROM file specified');
return false;
}else if(el('radio-ips').checked && (romFile1.fileSize>MAX_IPS_SIZE || romFile2.fileSize>MAX_IPS_SIZE)){
}else if(mode==='ips' && (romFile1.fileSize>MAX_IPS_SIZE || romFile2.fileSize>MAX_IPS_SIZE)){
MarcDialogs.alert('Files are too big for IPS format');
return false;
}
var newPatch;
if(el('radio-ips').checked){
if(mode==='ips'){
newPatch=createIPSFromFiles(romFile1, romFile2);
}else if(el('radio-ups').checked){
}else if(mode==='ups'){
newPatch=createUPSFromFiles(romFile1, romFile2);
}else if(el('radio-aps').checked){
}else if(mode==='aps'){
newPatch=createAPSFromFiles(romFile1, romFile2, false);
}else if(el('radio-apsn64').checked){
}else if(mode==='apsn64'){
newPatch=createAPSFromFiles(romFile1, romFile2, true);
}/*else if(el('radio-apsgba').checked){
newPatch=createAPSGBAFromFiles(romFile1, romFile2);
}else if(el('radio-bps').checked){
newPatch=createBPSFromFiles(romFile1, romFile2);
}*/
newPatch.export().save();
newPatch.export(romFile2.fileName.replace(/\.[^\.]+$/,'')).save();
}
function setTab(tab){
for(var i=0; i<2; i++){
if(i===tab){
el('tab'+i).style.display='block';
el('tabs').children[i].className='selected';
}else{
el('tab'+i).style.display=i===tab?'block':'none';
el('tabs').children[i].className='clickable'
}
}
}
/* CRC32/MD5/SHA-1 calculators */
var HEX_CHR='0123456789abcdef'.split('');