1
0
Fork 0
mirror of https://github.com/marcrobledo/RomPatcher.js.git synced 2025-06-27 16:25:54 +00:00
RomPatcher.js/rom-patcher-js/RomPatcher.webworker.apply.js
2024-08-09 19:30:49 +02:00

82 lines
No EOL
2.2 KiB
JavaScript

/* Rom Patcher JS v20240302 - Marc Robledo 2016-2024 - http://www.marcrobledo.com/license */
self.importScripts(
'./RomPatcher.js',
'./modules/BinFile.js',
'./modules/HashCalculator.js',
'./modules/RomPatcher.format.ips.js',
'./modules/RomPatcher.format.aps_n64.js',
'./modules/RomPatcher.format.aps_gba.js',
'./modules/RomPatcher.format.ups.js',
'./modules/RomPatcher.format.bps.js',
'./modules/RomPatcher.format.rup.js',
'./modules/RomPatcher.format.ppf.js',
'./modules/RomPatcher.format.pmsr.js',
'./modules/RomPatcher.format.vcdiff.js'
);
self.onmessage = event => { // listen for messages from the main thread
const romFile=new BinFile(event.data.romFileU8Array);
romFile.fileName=event.data.romFileName;
//romFile.fileType.event.data.romFileType;
const patchFile=new BinFile(event.data.patchFileU8Array);
patchFile.fileName=event.data.patchFileName;
const patch=RomPatcher.parsePatchFile(patchFile);
var errorMessage=false;
var patchedRom;
if(patch){
try{
patchedRom=RomPatcher.applyPatch(romFile, patch, event.data.options);
}catch(evt){
errorMessage=evt.message;
}
}else{
errorMessage='Invalid patch file';
}
//console.log('postMessage');
if(patchedRom){
/* set custom output name if embeded patch */
const patchExtraInfo=event.data.patchExtraInfo;
if(patchExtraInfo){
if(typeof patchExtraInfo.outputName === 'string')
patchedRom.setName(patchExtraInfo.outputName);
if(typeof patchExtraInfo.outputExtension === 'string')
patchedRom.setExtension(patchExtraInfo.outputExtension);
}
self.postMessage(
{
success: !!errorMessage,
romFileU8Array:event.data.romFileU8Array,
patchFileU8Array:event.data.patchFileU8Array,
patchedRomU8Array:patchedRom._u8array,
patchedRomFileName:patchedRom.fileName,
errorMessage:errorMessage
},
[
event.data.romFileU8Array.buffer,
event.data.patchFileU8Array.buffer,
patchedRom._u8array.buffer
]
);
}else{
self.postMessage(
{
success: false,
romFileU8Array:event.data.romFileU8Array,
patchFileU8Array:event.data.patchFileU8Array,
errorMessage:errorMessage
},
[
event.data.romFileU8Array.buffer,
event.data.patchFileU8Array.buffer
]
);
}
};