diff --git a/RomPatcher.js b/RomPatcher.js index 7df5143..003bd33 100644 --- a/RomPatcher.js +++ b/RomPatcher.js @@ -1,8 +1,9 @@ -/* RomPatcher.js v20180920 - Marc Robledo 2016-2018 - http://www.marcrobledo.com/license */ +/* RomPatcher.js v20180924 - Marc Robledo 2016-2018 - http://www.marcrobledo.com/license */ var MAX_ROM_SIZE=33554432; -var MORE_SNES_SIZES_HEADERLESS=[786432,1310720,1572864,2621440,3145728,5242880,6291456]; +var MORE_SNES_SIZES_HEADERLESS=[393216,786432,1310720,1572864,2621440,3145728,5242880,6291456]; //note: 393216 is a PCE file size +var DEBUG_CREATE_UNHEADERED_PATCH=false; var romFile, headeredRomFile, unheaderedRomFile, patch, romFile1, romFile2, tempFile; /* Shortcuts */ @@ -96,7 +97,7 @@ addEvent(window,'load',function(){ }); function isPowerOfTwo(romFile){return romFile.fileSize && (romFile.fileSize & (romFile.fileSize-1))===0} -function isSNESExtension(romFile){return /\.(smc|sfc|fig|swc)$/.test(romFile.fileName)} +function isSNESExtension(romFile){return /\.(smc|sfc|fig|swc|pce)$/.test(romFile.fileName)} function isSNESHeaderless(romFile){return isSNESExtension(romFile) && (isPowerOfTwo(romFile) || MORE_SNES_SIZES_HEADERLESS.indexOf(romFile.fileSize)>=0)} function isSNESHeadered(romFile){return isSNESExtension(romFile) && (isPowerOfTwo(romFile.fileSize-512) || MORE_SNES_SIZES_HEADERLESS.indexOf(romFile.fileSize-512)>=0)} @@ -149,6 +150,13 @@ function applyPatchFile(p,r){ unheaderedPatchedROM.fileName=patchedROM.fileName; unheaderedPatchedROM.writeBytes(0, patchedROM.readBytes(512, patchedROM.fileSize-512)); unheaderedPatchedROM.save(); + + if(DEBUG_CREATE_UNHEADERED_PATCH){ + romFile1=unheaderedRomFile; + romFile2=unheaderedPatchedROM; + unheaderedPatchedROM.fileName=unheaderedPatchedROM.fileName.replace(' (patched)',''); + createPatchFile(); + } }else{ patchedROM.save(); } diff --git a/_cache_service_worker.js b/_cache_service_worker.js index a495928..ee1317a 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='v20180920'; +const PRECACHE_ID='v20180926'; const PRECACHE_FILES=[ 'index.html','./', 'RomPatcher.css', diff --git a/bps.js b/bps.js index 16ba825..e8d7c32 100644 --- a/bps.js +++ b/bps.js @@ -1,4 +1,4 @@ -/* BPS module for RomPatcher.js v20180428 - Marc Robledo 2016-2018 - http://www.marcrobledo.com/license */ +/* BPS module for RomPatcher.js v20180926 - Marc Robledo 2016-2018 - http://www.marcrobledo.com/license */ /* File format specification: https://www.romhacking.net/documents/746/ */ var BPS_MAGIC='BPS1'; @@ -49,9 +49,12 @@ BPS.prototype.apply=function(romFile){ seek+=action.length; }else if(action.type===BPS_ACTION_SOURCE_COPY || action.type===BPS_ACTION_TARGET_COPY){ seek+=decodeBPS(this.file, seek).length; + }else{ + //console.log(action.type) } } tempFile=new MarcBinFile(newFileSize); + //alert(newFileSize); //patch @@ -68,6 +71,7 @@ BPS.prototype.apply=function(romFile){ if(action.type===BPS_ACTION_SOURCE_READ){ tempFile.writeBytes(outputOffset, romFile.readBytes(outputOffset, action.length)); outputOffset+=action.length; + //seek+=action.length; }else if(action.type===BPS_ACTION_TARGET_READ){ tempFile.writeBytes(outputOffset, this.file.readBytes(seek, action.length)); @@ -118,8 +122,10 @@ function readBPSFile(file){ var decodedMetaDataLength=decodeBPS(file, seek); seek+=decodedMetaDataLength.length; - patchFile.metaData=file.readString(seek, decodedMetaDataLength.length); - seek+=patchFile.metaData.length; + if(decodedMetaDataLength.number){ + patchFile.metaData=file.readString(seek, decodedMetaDataLength.number); + seek+=patchFile.metaData.number; + } patchFile.actionsOffset=seek; patchFile.file=file; diff --git a/index.html b/index.html index 51535c9..837d8ea 100644 --- a/index.html +++ b/index.html @@ -103,7 +103,7 @@