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

202 lines
8.8 KiB
HTML
Raw Permalink Normal View History

2017-03-14 20:32:40 +01:00
<!DOCTYPE html>
<html>
2017-03-14 20:32:40 +01:00
<head>
2018-04-28 15:57:54 +02:00
<title>Rom Patcher JS</title>
2017-03-14 20:32:40 +01:00
<meta http-equiv="content-Type" content="text/html; charset=UTF-8"/>
<meta name="description" content="An online web-based ROM patcher. Supported formats: IPS, BPS, UPS, APS, RUP, PPF and xdelta."/>
<meta name="keywords" content="ips,ups,aps,bps,rup,ninja,ppf,xdelta,patcher,online,html5,web,rom,patch,hack,translation"/>
2017-03-14 20:32:40 +01:00
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
2018-04-28 15:57:54 +02:00
<link rel="manifest" href="./manifest.json"/>
<link rel="shortcut icon" href="./style/favicon.png" type="image/png" sizes="16x16"/>
<link rel="shortcut icon" href="./style/logo192.png" type="image/png" sizes="192x192"/>
2019-05-31 21:00:39 +02:00
<!-- iOS icons -->
<link rel="apple-touch-icon" sizes="57x57" href="./style/logo114.png" />
<link rel="apple-touch-icon" sizes="114x114" href="./style/logo114.png" />
<link rel="apple-touch-icon" sizes="72x72" href="./style/logo144.png" />
<link rel="apple-touch-icon" sizes="144x144" href="./style/logo144.png" />
<link rel="apple-touch-icon" href="./style/logo192.png" />
2020-11-06 21:18:54 +01:00
<!-- social network metatags -->
<meta name="twitter:site" content="@marc_robledo">
<meta name="twitter:creator" content="@marc_robledo">
<meta name="twitter:domain" content="marcrobledo.com">
<meta property="og:title" content="Rom Patcher JS">
<meta name="twitter:title" content="Rom Patcher JS">
<meta name="twitter:description" content="An online web-based ROM patcher. Supported formats: IPS, BPS, UPS, APS, RUP, PPF and xdelta.">
<meta property="og:image" content="https://www.marcrobledo.com/RomPatcher.js/style/thumbnail.jpg">
<meta name="twitter:image" content="https://www.marcrobledo.com/RomPatcher.js/style/thumbnail.jpg">
<meta name="twitter:card" content="photo">
<link type="text/css" rel="stylesheet" href="./style/RomPatcher.css" media="all"/>
<script type="text/javascript" src="./js/locale.js"></script>
<script type="text/javascript" src="./js/RomPatcher.js"></script>
<script type="text/javascript" src="./js/MarcFile.js"></script>
<script type="text/javascript" src="./js/crc.js"></script>
<script type="text/javascript" src="./js/formats/zip.js"></script>
<script type="text/javascript" src="./js/formats/ips.js"></script>
<script type="text/javascript" src="./js/formats/ups.js"></script>
<script type="text/javascript" src="./js/formats/aps.js"></script>
<script type="text/javascript" src="./js/formats/bps.js"></script>
<script type="text/javascript" src="./js/formats/rup.js"></script>
<script type="text/javascript" src="./js/formats/ppf.js"></script>
<script type="text/javascript" src="./js/formats/pmsr.js"></script>
<script type="text/javascript" src="./js/formats/vcdiff.js"></script>
<script type="text/javascript" src="./js/zip.js/zip.js"></script>
2019-05-31 21:00:39 +02:00
<script type="text/javascript"><!--
2020-03-02 20:28:42 +01:00
/*
2019-05-31 21:00:39 +02:00
// PREDEFINED PATCHES EXAMPLE
// uncomment this to enable predefined patches, Rom Patcher JS will fetch patches hosted in your server
2020-03-02 20:28:42 +01:00
// - format should be self explanatory
// - you can add provide crc for source files, allowing IPS to have validation!
// - this could be also dynamically generated by your server backend, allowing you to build your own patcher for your projects
var PREDEFINED_PATCHES=[
//zip includes a single patch (recommended)
{patch:'./_example/SONICDX.zip',name:'Sonic 3D Blast Director\'s Cut v1.1',crc:0x44a2ca44},
//if providing a zipped file, multiple patch files within it can be specified (recommended)
2019-05-31 21:00:39 +02:00
{patch:'./_example/SML2DXv181.zip#SML2DXv181.ips',name:'Super Mario Land 2 DX v1.8.1 (USA/Europe)',crc:0xd5ec24e4},
{patch:'./_example/SML2DXv181.zip#SML2DXv181_jap.ips',name:'Super Mario Land 2 DX v1.8.1 (Japan)',crc:0xa715daf5},
2020-03-02 20:28:42 +01:00
//if a patch file is not specified in a zipped file, user will be able to choose the desired patch file in a popup (not recommended, also only a single crc for all patches could be provided)
2019-05-31 21:00:39 +02:00
{patch:'./_example/SML2DXv181.zip',name:'Super Mario Land 2 DX v1.8.1 (All regions)'},
//uncompressed patch (not recommended because of bandwidth purposes)
{patch:'./_example/MarvelousATI_EN_v1.07.xdelta',name:'Marvelous (SFC) ENG Translation v1.07',crc:0xcedf3ba7}
2020-03-02 20:28:42 +01:00
];
*/
--></script>
<!-- custom code for RHDN -->
<!--
<?php
if(isset($_REQUEST["file"]) && preg_match("/^(hacks|translations)\/\d+$/", $_REQUEST["file"]) && isset($_REQUEST["patch_name"])){
$patch="/download/".$_REQUEST["file"];
if(isset($_REQUEST["patch"])){
$patch.='#'+strip_tags(trim($_REQUEST["patch"]))
}
$patch_name=strip_tags(trim($_REQUEST["patch_name"]));
$crc="";
if(isset($_REQUEST["crc"]) && preg_match("/^[0-9a-fA-F]{8}$/", $_REQUEST["crc"])){
$crc=', crc:0x'.$_REQUEST["crc"];
}
?>
<script type="text/javascript">
var PREDEFINED_PATCHES=[{patch:'<?= strip_tags($patch); ?>', name:'<?= strip_tags($patch_name); ?>'<?= $crc?>}];
</script>
<?php
}
?>
-->
2017-03-14 20:32:40 +01:00
</head>
<body><div id="column">
2017-03-14 20:32:40 +01:00
2017-03-14 20:32:40 +01:00
<!-- HEADER -->
<header><img src="./style/logo192.png" /><h1>Rom Patcher JS</h1></header>
2017-03-14 20:32:40 +01:00
<!-- APP -->
2018-04-28 15:57:54 +02:00
<div id="wrapper">
<div id="switch-container"><span id="switch-create-button" onclick="setCreatorMode(!/enabled/.test(el('switch-create').className));"><span data-localize="creator_mode">Creator mode</span> <span id="switch-create" class="switch disabled"></span></span></div>
2018-04-28 15:57:54 +02:00
<div id="tab0" class="tab">
2017-03-14 20:32:40 +01:00
<div class="row">
<div class="leftcol"><label for="input-file-rom" data-localize="rom_file">ROM file:</label></div>
2018-04-28 15:57:54 +02:00
<div class="rightcol">
<input type="file" id="input-file-rom" class="enabled" />
</div>
</div>
2018-04-28 15:57:54 +02:00
<div class="row" id="rom-info">
<div class="leftcol">CRC32:</div><div class="rightcol"><span id="crc32"></span></div>
<div class="leftcol">MD5:</div><div class="rightcol"><span id="md5"></span></div>
<div class="leftcol">SHA-1:</div><div class="rightcol"><span id="sha1"></span></div>
</div>
<div class="row" id="row-removeheader" style="display:none">
2019-05-31 21:00:39 +02:00
<div class="leftcol"></div>
2018-04-28 15:57:54 +02:00
<div class="rightcol">
2019-05-31 21:00:39 +02:00
<input type="checkbox" id="checkbox-removeheader" /> <label for="checkbox-removeheader" data-localize="remove_header">Remove header before patching</label>
2017-03-14 20:32:40 +01:00
</div>
</div>
<div class="row" id="row-addheader" style="display:none">
2019-05-31 21:00:39 +02:00
<div class="leftcol"></div>
2018-04-28 15:57:54 +02:00
<div class="rightcol">
<input type="checkbox" id="checkbox-addheader" /> <label for="checkbox-addheader" data-localize="add_header">Add temporary header</label> <small>(<label id="headersize" for="checkbox-addheader"></label>)</small>
</div>
</div>
2017-03-14 20:32:40 +01:00
<div class="row" id="row-file-patch">
<div class="leftcol"><label for="input-file-patch" data-localize="patch_file">Patch file:</label></div>
2018-04-28 15:57:54 +02:00
<div class="rightcol">
2020-03-02 20:28:42 +01:00
<input type="file" id="input-file-patch" accept=".ips,.ups,.bps,.aps,.rup,.ppf,.mod,.xdelta,.zip"/>
2017-03-14 20:32:40 +01:00
</div>
</div>
<div class="buttons">
<span id="message-apply" class="message"></span>
2019-05-31 21:00:39 +02:00
<button id="button-apply" data-localize="apply_patch" class="disabled" disabled onclick="applyPatch(patch, romFile, false)">Apply patch</button>
2017-03-14 20:32:40 +01:00
</div>
</div>
2018-04-28 15:57:54 +02:00
<div id="tab1" class="tab">
2017-03-14 20:32:40 +01:00
<div class="row">
<div class="leftcol"><label for="input-file-rom1" data-localize="original_rom" >Original ROM:</label></div>
2018-04-28 15:57:54 +02:00
<div class="rightcol">
<input type="file" id="input-file-rom1" />
2017-03-14 20:32:40 +01:00
</div>
</div>
<div class="row">
<div class="leftcol"><label for="input-file-rom2" data-localize="modified_rom">Modified ROM:</label></div>
2018-04-28 15:57:54 +02:00
<div class="rightcol">
<input type="file" id="input-file-rom2" />
</div>
</div>
<div class="row">
<div class="leftcol" data-localize="patch_type">Patch type:</div>
2018-04-28 15:57:54 +02:00
<div class="rightcol">
<select id="select-patch-type">
2018-04-28 15:57:54 +02:00
<option value="ips">IPS</option>
<option value="bps">BPS</option>
<option value="ppf">PPF</option>
2018-04-28 15:57:54 +02:00
<option value="ups">UPS</option>
<option value="aps">APS</option>
<option value="rup">RUP</option>
2018-04-28 15:57:54 +02:00
</select>
2017-03-14 20:32:40 +01:00
</div>
</div>
<div class="buttons">
<span id="message-create" class="message"></span>
<button id="button-create" class="disabled" disabled onclick="createPatch(romFile1, romFile2, el('select-patch-type').value)" data-localize="create_patch">Create patch</button>
2017-03-14 20:32:40 +01:00
</div>
</div>
2017-03-14 20:32:40 +01:00
</div>
2019-05-31 21:00:39 +02:00
2018-04-28 15:57:54 +02:00
<!-- FOOTER -->
<footer>
<div>
<select id="select-language" onchange="setLanguage(this.value)">
<option value="en">English</option>
<option value="de">Deutsch</option>
<option value="es">Español</option>
<option value="ca">Català</option>
<option value="ru">Russian</option>
</select>
</div>
Rom Patcher JS <small>v2.4</small> by <a href="/">Marc Robledo</a>
<br />
2018-04-28 15:57:54 +02:00
<i class="icon github"></i> <a href="https://github.com/marcrobledo/RomPatcher.js/" 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>
</footer>
2017-03-14 20:32:40 +01:00
2018-04-28 15:57:54 +02:00
</div></body></html>