diff --git a/RomPatcher.js b/RomPatcher.js index 44ac4e1..46f1484 100644 --- a/RomPatcher.js +++ b/RomPatcher.js @@ -1,4 +1,4 @@ -/* RomPatcher.js v20180423 - Marc Robledo 2016-2018 - http://www.marcrobledo.com/license */ +/* RomPatcher.js v20180427 - Marc Robledo 2016-2018 - http://www.marcrobledo.com/license */ var MAX_ROM_SIZE=33554432; var romFile, headeredRomFile, unheaderedRomFile, patch, romFile1, romFile2, tempFile; /* Shortcuts */ @@ -141,35 +141,29 @@ function applyPatchFile(p,r){ function createPatchFile(){ - var MODES=['ips','ups','aps','apsn64'/*,'apsgba','bps'*/]; - var mode=0; - for(var i=0; iMAX_IPS_SIZE || romFile2.fileSize>MAX_IPS_SIZE)){ + }else if(el('radio-ips').checked && (romFile1.fileSize>MAX_IPS_SIZE || romFile2.fileSize>MAX_IPS_SIZE)){ MarcDialogs.alert('Files are too big for IPS format'); return false; } var newPatch; - if(mode==='ips'){ + if(el('radio-ips').checked){ newPatch=createIPSFromFiles(romFile1, romFile2); - }else if(mode==='ups'){ + }else if(el('radio-ups').checked){ newPatch=createUPSFromFiles(romFile1, romFile2); - }else if(mode==='aps'){ + }else if(el('radio-aps').checked){ newPatch=createAPSFromFiles(romFile1, romFile2, false); - }else if(mode==='apsn64'){ + }else if(el('radio-apsn64').checked){ newPatch=createAPSFromFiles(romFile1, romFile2, true); - }else if(mode==='apsgba'){ + }/*else if(el('radio-apsgba').checked){ newPatch=createAPSGBAFromFiles(romFile1, romFile2); - }else if(mode==='bps'){ + }else if(el('radio-bps').checked){ newPatch=createBPSFromFiles(romFile1, romFile2); - } + }*/ newPatch.export().save(); } diff --git a/_cache_service_worker.js b/_cache_service_worker.js index 7533901..8ab9a7f 100644 --- a/_cache_service_worker.js +++ b/_cache_service_worker.js @@ -12,7 +12,7 @@ limitations under the License. mod by marcrobledo, original from: https://github.com/GoogleChrome/samples/blob/gh-pages/service-worker/basic/service-worker.js */ -const PRECACHE_ID='v20180423'; +const PRECACHE_ID='v20180427b'; const PRECACHE_FILES=[ 'index.html','./', 'RomPatcher.css', diff --git a/aps.js b/aps.js index 099e3b9..3762638 100644 --- a/aps.js +++ b/aps.js @@ -1,4 +1,4 @@ -/* APS (N64) module for RomPatcher.js v20171112 - Marc Robledo 2017 - http://www.marcrobledo.com/license */ +/* APS (N64) module for RomPatcher.js v20180427 - Marc Robledo 2017-2018 - http://www.marcrobledo.com/license */ /* File format specification: https://github.com/btimofeev/UniPatcher/wiki/APS-(N64) */ var RECORD_RLE=0x0000; @@ -181,7 +181,7 @@ function createAPSFromFiles(original, modified, N64header){ var seek=0; while(seek=original.fileSize?0x00:original.readByte(seek); var b2=modified.readByte(seek); if(b1!==b2){ @@ -194,7 +194,9 @@ function createAPSFromFiles(original, modified, N64header){ if(b2!==differentBytes[0]) RLERecord=false; seek++; - b1=seek>original.fileSize?0x00:original.readByte(seek); + if(seek===modified.fileSize) + break; + b1=seek>=original.fileSize?0x00:original.readByte(seek); b2=modified.readByte(seek); } diff --git a/index.html b/index.html index fb09e53..8bbef73 100644 --- a/index.html +++ b/index.html @@ -3,8 +3,8 @@ RomPatcher.js - - + + diff --git a/ips.js b/ips.js index 0365cfa..97c6331 100644 --- a/ips.js +++ b/ips.js @@ -1,4 +1,4 @@ -/* IPS module for RomPatcher.js v20171022 - Marc Robledo 2016-2017 - http://www.marcrobledo.com/license */ +/* IPS module for RomPatcher.js v20180427 - Marc Robledo 2016-2018 - http://www.marcrobledo.com/license */ /* File format specification: http://www.smwiki.net/wiki/IPS_file_format */ var MAX_IPS_SIZE=16777216; @@ -146,8 +146,13 @@ function readIPSFile(file){ function createIPSFromFiles(original, modified){ tempFile=new IPS(); - if(modified.fileSizeoriginal.fileSize){ + var originalTemp=new MarcBinFile(modified.fileSize); + originalTemp.writeBytes(0, original.readBytes(0, original.fileSize)); + original=originalTemp; + } var seek=0; while(seekmodified.fileSize){ - seekStart--; + if(seek+6>modified.fileSize){ + var finalSeek=modified.fileSize-seek-1; + length+=finalSeek; + seek+=finalSeek; + break; } - for(var i=seekStart;i>0 && nearbyDifference;i--){ + + for(var i=6;i>0 && nearbyDifference;i--){ var bc1=original.readByte(seek+i); var bc2=modified.readByte(seek+i); diff --git a/ups.js b/ups.js index 1b6ab66..758c680 100644 --- a/ups.js +++ b/ups.js @@ -1,4 +1,4 @@ -/* UPS module for RomPatcher.js v20171112 - Marc Robledo 2017 - http://www.marcrobledo.com/license */ +/* UPS module for RomPatcher.js v20180427 - Marc Robledo 2017-2018 - http://www.marcrobledo.com/license */ /* File format specification: http://www.romhacking.net/documents/392/ */ var UPS_MAGIC='UPS1'; @@ -77,7 +77,7 @@ UPS.prototype.apply=function(romFile){ var nextDifference=this.records[i]; nextOffset+=nextDifference.offset; for(var j=0; joriginal.fileSize?0x00:original.readByte(seek); + var b1=seek>=original.fileSize?0x00:original.readByte(seek); var b2=modified.readByte(seek); if(b1!==b2){ @@ -183,7 +183,9 @@ function createUPSFromFiles(original, modified){ while(b1!==b2){ differentBytes.push(b1 ^ b2); seek++; - b1=seek>original.fileSize?0x00:original.readByte(seek); + if(seek===modified.fileSize) + break; + b1=seek>=original.fileSize?0x00:original.readByte(seek); b2=modified.readByte(seek); }