From e13da86290994756adfaada08d0b1e85934a2e5c Mon Sep 17 00:00:00 2001 From: Marc Robledo Date: Thu, 24 Mar 2022 22:38:53 +0100 Subject: [PATCH] added settings screen with new features --- _cache_service_worker.js | 31 ++-- index.html | 126 ++++++++----- js/RomPatcher.js | 160 ++++++++++++---- js/formats/ups.js | 13 +- js/formats/zip.js | 23 +-- js/locale.js | 35 +++- manifest.json | 11 +- style/RomPatcher.css | 234 ++++++++++++++---------- style/{logo114.png => app_icon_114.png} | Bin style/{logo144.png => app_icon_144.png} | Bin style/{favicon.png => app_icon_16.png} | Bin style/{logo192.png => app_icon_192.png} | Bin style/app_icon_maskable.png | Bin 0 -> 7382 bytes style/icon_close.svg | 4 + style/icon_github.svg | 4 + style/icon_heart.svg | 3 + style/icon_settings.svg | 4 + style/logo.png | Bin 0 -> 7065 bytes 18 files changed, 433 insertions(+), 215 deletions(-) rename style/{logo114.png => app_icon_114.png} (100%) rename style/{logo144.png => app_icon_144.png} (100%) rename style/{favicon.png => app_icon_16.png} (100%) rename style/{logo192.png => app_icon_192.png} (100%) create mode 100644 style/app_icon_maskable.png create mode 100644 style/icon_close.svg create mode 100644 style/icon_github.svg create mode 100644 style/icon_heart.svg create mode 100644 style/icon_settings.svg create mode 100644 style/logo.png diff --git a/_cache_service_worker.js b/_cache_service_worker.js index 3ab45d1..a2d64ce 100644 --- a/_cache_service_worker.js +++ b/_cache_service_worker.js @@ -13,31 +13,22 @@ navigator.serviceWorker.register('/repo/_cache_service_worker.js', {scope: '/repo/'}) */ - -/* MOD: fix old caches for mrc */ -caches.keys().then(function(cacheNames){ - for(var i=0; i - + Rom Patcher JS @@ -7,14 +7,19 @@ - - + + - - - - - + + + + + + + + + + @@ -82,39 +87,39 @@ -

Rom Patcher JS

+

Rom Patcher JS

-
Creator mode
+
Creator mode
-
-
+
+
-
-
CRC32:
-
MD5:
-
SHA-1:
+
+
CRC32:
+
MD5:
+
SHA-1:
-
-
+
+
-
-
+
+
()
-
-
+
+
@@ -129,22 +134,22 @@
-
-
+
+
-
-
+
+
-
-
Patch type:
+
+
Patch type:
- - - - - - - - - - - - +
- Rom Patcher JS v2.5.2 by Marc Robledo + Rom Patcher JS v2.6 by Marc Robledo
- See on GitHub - Donate + See on GitHub + Donate -
+
+ + + +
+
+
+
    +
    + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + diff --git a/js/RomPatcher.js b/js/RomPatcher.js index 653a322..3921246 100644 --- a/js/RomPatcher.js +++ b/js/RomPatcher.js @@ -1,4 +1,4 @@ -/* Rom Patcher JS v20210920 - Marc Robledo 2016-2021 - http://www.marcrobledo.com/license */ +/* Rom Patcher JS v20220319 - Marc Robledo 2016-2022 - http://www.marcrobledo.com/license */ const TOO_BIG_ROM_SIZE=67108863; const HEADERS_INFO=[ @@ -21,7 +21,6 @@ else if(location.protocol==='https:' && 'serviceWorker' in navigator && window.l var romFile, patchFile, patch, romFile1, romFile2, tempFile, headerSize, oldHeader; -var userLanguage; var CAN_USE_WEB_WORKERS=true; var webWorkerApply,webWorkerCreate,webWorkerCrc; @@ -94,7 +93,7 @@ try{ /* Shortcuts */ function addEvent(e,ev,f){e.addEventListener(ev,f,false)} function el(e){return document.getElementById(e)} -function _(str){return userLanguage[str] || str} +function _(str){return (LOCALIZATION[AppSettings.langCode] && LOCALIZATION[AppSettings.langCode][str]) || LOCALIZATION['en'][str] || str} @@ -190,19 +189,19 @@ function _parseROM(){ setTabApplyEnabled(false); }else{ if(headerSize=canHaveFakeHeader(romFile)){ - el('row-addheader').className='row'; + el('row-addheader').className='row m-b'; if(headerSize<1024){ el('headersize').innerHTML=headerSize+'b'; }else{ el('headersize').innerHTML=parseInt(headerSize/1024)+'kb'; } - el('row-removeheader').className='row hide'; + el('row-removeheader').className='row m-b hide'; }else if(headerSize=hasHeader(romFile)){ - el('row-addheader').className='row hide'; - el('row-removeheader').className='row'; + el('row-addheader').className='row m-b hide'; + el('row-removeheader').className='row m-b'; }else{ - el('row-addheader').className='row hide'; - el('row-removeheader').className='row hide'; + el('row-addheader').className='row m-b hide'; + el('row-removeheader').className='row m-b hide'; } updateChecksums(romFile, 0); @@ -211,23 +210,73 @@ function _parseROM(){ -function setLanguage(langCode){ - if(typeof LOCALIZATION[langCode]==='undefined') - langCode='en'; - userLanguage=LOCALIZATION[langCode]; - - document.documentElement.lang=langCode; - var translatableElements=document.querySelectorAll('*[data-localize]'); - for(var i=0; i1){ - var zipOverlay=document.createElement('div'); - zipOverlay.className='zip-overlay'; - var zipDialog=document.createElement('div'); - zipDialog.className='zip-dialog'; - var zipList=document.createElement('ul'); - zipList.className='zipped-files' + document.getElementById('zip-dialog-message').innerHTML=_(sourceFile===romFile?'rom_file':'patch_file'); + + var zipList=document.getElementById('zip-dialog-file-list'); + zipList.innerHTML=''; for(var i=0; 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 ByZZnD literal 0 HcmV?d00001 diff --git a/style/icon_close.svg b/style/icon_close.svg new file mode 100644 index 0000000..b947dd3 --- /dev/null +++ b/style/icon_close.svg @@ -0,0 +1,4 @@ + + + + diff --git a/style/icon_github.svg b/style/icon_github.svg new file mode 100644 index 0000000..4ffa6d2 --- /dev/null +++ b/style/icon_github.svg @@ -0,0 +1,4 @@ + + + + diff --git a/style/icon_heart.svg b/style/icon_heart.svg new file mode 100644 index 0000000..893bf40 --- /dev/null +++ b/style/icon_heart.svg @@ -0,0 +1,3 @@ + + + diff --git a/style/icon_settings.svg b/style/icon_settings.svg new file mode 100644 index 0000000..4683da0 --- /dev/null +++ b/style/icon_settings.svg @@ -0,0 +1,4 @@ + + + + diff --git a/style/logo.png b/style/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..51f320627e3f619afd864afe1fac216e64ef2da7 GIT binary patch literal 7065 zcmcI}`8(9#`~P#sV8}AeVC-h>5=IQN?~yfYAwwuzwy{MF!Wa}uFJvvdEG0`+27?ya zmz2Hi`%bp6_doFc?eoJq=ZACM*Znx>zOU=P9*;+YnTb9lJr_Ly0E`CLb#7jqM0YXAq$u0&~LfsJ0hxxG1$Z+jqY zypu7w3uN!Btv}?42YB~Ljrr(AF)=iHmPw4hGzzB$d>vUD56C?pd9>`_Qr%R3Tv4^W zzSFfKjhe{VsQlNXw4o$g{q`-!6z0!%lqWz0Aes;XC>qd&fuPY)4VVrPEdYi=SP1`@ zS5PycWQ0z{EhuZ9sim}YOxVqaM@)jSrP4L|DcrhBGB1>V@?1W^(w=vR|J zW)1{^#AJ#*g)c-<=Px-Ch!)a%FHFPI%W5~ycOpbhUKN^Wi4?g8Kk{GH1vJf!c(le1 z!Z-G&OD^InDHfD1oy$sxXae3`120;InhXpZJH=s0jwc5$1iTs{w^pNb3Hc9GfrkUqYi6@SP}FdPrfNhF73K4XLo5uGv9rz~I4M-m z6|y`E+nByruPK?T5B{Qkt@g2Ec1TvK+$MI~tG|n4rPF0^m`MU|mR#L(DF;<0I}-hL z3{LK80zrx?s+ot+@5^lJ;jCd)Iv3eRvsfpHc0_-w_|Kq&ldgnQbIHW>ZV@5CLDN%V zR>b*=k$)K}KP!ZF`0xDKi5?6TV(R(skrQGoHqEDtD*bvYUwgcL;ATP<1_+Q(Mq8^Ds-~G+BZ&PBrsD}m<6c;?} z>=Inh-MHYRK~_QdJSWaJ1;G5cw{C??$XCHSW{Fze2 z6rY*^lUD;L^x5V97onFYHP8e}77YtT&Y8gpA?Bq=N;AFtk55}WR?f5orw$H4I z-XYh{buGrOke%k@G8>!{WKfSkl!|Pi!C$;U_|8w^p9& z+wypR2}~pxt00vQ{i&?%BS^i%o#jTJiihKLL3{&wBGDcejF@gwierMB&Q;_5aMmsU zSy3vjY0EVp%bEka!S^ID4&Y#xPhZ6_+5u;ZLPvC=I_CTcn_5M-9`wG0Ub{Bl6~(9p;AwSYk_)fHD4~2V?%0BT|0?=K`p9Cf6ajJ@971YI*22eP3J&+>U`liz#&MB3GqK zgUtrB7Y)XMdZmfEyim1}G-J~AYC;zPP+z5++QsY!Jm12*i zA#Ig%Tbib;;)fK%Z#h!=t`LP*_k$z>eCVm?G(Ci+qV>31T%SxCblA(Jef4uMs^FVn zF+G{@y?;u$=ts434}X@2%(+@kgOmj+?O;2f!6<(bC}HEMgr&Ej#sy8D!_Vn{;aVEV z;&4_UeUZ-`L4@F{SGNNfHWZ&rl!zbjWgB+O3_Y%8jBWnT!&7xj7%)-Z7hD(oj7=Fy zYAf!3@FPav;g)2*MZ&!la}NeMik091y+llukAF5%GSOFfwU_X<3N(@w`A5P!D;Zo< z-uMS6@cV(l?>4J(cZw55iZqX4@@E##ZByy}Rl|FhLQih02ngT2hA|p^Jji1;^_DV9 zqgG2ZS|MJ>bjbJ;KqDFUWY>?%_`)MR!;^j%#Gsq+%9kX)GY%)lZf(Zf0{fFx4+dIT zCSMWJuHP{2{fiu>SXhS5ABiC6cRBZ+ST!yeqP{coX2>SVj{Rumdn87&hL33HX@YBZ zSgORDKzG6eIbFZ_d*4!W^N0gKz751e74?xGCJAkyH@UdXEPXQ2fB*R~OXTHIfon1n z)PRW)-8;YW{CagSkxPxk){UO?o%cDO1KSwq6#b{&vUpfzht6CrPqB23{yD32s0i-~ z1G|P`^vLi2us*E-v8Slq*1Tk{M$)5bFY~85?t=o5J_eho@u`WXd$=JS5fSWAX9H+VOP8kU%L`54f*mnUhK5QMq^S`ZQ3aI10t znKK?D$@`>LI@WH7se7TUcc?vY23+$q$z$69Ia0*6^d&I%81uENQ{xw&O=OJs71!oV zDG)+%aGSo9@bb&Lr0`i1yVT3*GwB_R6`)%fduj;zej;Xa7 z|NVCQ@L4M2SQH-jk5k91$j0-K}ZgmvO}<0a*QT!kl2|Yhz=T z#;l?2Hq>{|dipm0U3$T`9S~pe@|#OmYPH(=O`eF0p6F^l7rs821tnWZMP7a^a~l(w zHASP%@QHdgwpkj}({BUXOgqHzN1N=QPF06&Hwc{NejDdy(ZCI%Tz@%ii7a~Oqa207 zO!c(?#0fhypD>SLTri!L+lXWM6cLb(qYp{Imwj7d7>3S{Q4-Zp5ajzVcTN-;R{K6O zU}@4nIdLSZj3cZaO`lv6AXW5MWG#C`f_DY|91@O%2)8mNfbYw`{2ugI5J!)^ZruydF5#PV8qNk*Z9(9ug-`eLwzI zDa7{y0InG*RGFD!!AC50rU%q7@=;jPK&|huZ6%fA;9<=Wk{5NviUZ5@6JMu(a zwRJMup3iQ3N}@qntQFa@p|$%-n;TL)=1nWBY^7$KVI#;rWN?)=R#i8W;=fuhvj>eg z0!9QTwla7sCET`_hgvfvM{%}zgh8#n7`0jA{4V#*{zs_$4fWOTjXzg^Daw6+ z+Ui2`U?Fc{hfD`Tg5S))h{1d=oTQ!VE4lw!ollUHBmZ6YTX1Ptl4(%renOb+K~(!7 zK835D@VglkSz6>~Z|Er5a|gaVEQSN=^uIgg@*|0mz2i>7cT-1_j(jI>$F4qmr032d z`PXg^^%}tistMZ(mFsL6LA;IQ%%U%eo+!UTT*3G@B%tkv*aw%~kRFR)poXZ(j^jF%*NY;#jMv!2vCOMcZ+^=ZW+mxSRrdIT-jH<`uvr5CU9w+rF1Qn@VKwe8*0{Ff%rk3VYF-+_-#CdX zvwqm6{0m-jYjYmq8Lk|5F>H;qyuRJBsWfTj{+7&!UpONhD zSa5x00%fK~x0h&Ke4u`^XQyo%u! zervKU+HaVffq5YmVU*D_)TaFe%WBehnK9YL^2*e-?VL;a0kP91STt^Xok0WGs}Vn^ ziYi#1>@MpOBr4+qH}7(dKZ3q9?R;3|O7mh#_%dOl?Sv*H&6%HUWR&~BCrnnMqrR&{ z%{F(%J6hQ~ZPGjHJc!wg|E(Ndes&0ZM?p~5iixSEt-21^5MF(g`KQ#B$OC-a_2!^f8K@2^m{%%8oDg91kfOF#GQp5@oej4!Y(S;Lu33lw#Cuwq*99>-~{w~QDN zF?(jDV#E`tUFBh-1U}m34}V}%))6RbK3A_0u5xFJhWl;hoxOmkLqnhe3BqVNy9RF+ z-vqD!Zct}oS-lx^WdC>MrD};+eiC(8G5tS&lZybi)>mfbUzZvvhg*#9@1%!bN2HYc zbGKR_UWSK+eEbNyC^W_a9HN=}s4PAf$6-u9{M1GBUzC)MY@Md&Xx?jHuIO51}9=yJ`aMT-RAxl)7(Y9Y-TaInLb*I?q+yJ!?E)4xHKUHGf1d%Zb zSh&M@2`^56-N@#R(YAjhyYoNoR}Lt?bEgQ}(Tr9(<#4Ab)V>)uSb}LtBVzET z8_LrkRdPapw-z0}6baa7@`8tE?RQT2F3!gmj{aBiH4QUhURT=)dy%-%Ut>`MBUp7f zT+c36vea$lO46s7U6gph@MCin7N!j8So3ooP+bdLv9g&-h@@u^h|D*5>;Gb98~=bf zqkV`c#n0csyAD4@Xat{p`hltt+9@~#i!^J?Js4!Fue`>F1=Sq;WBlZqLZW7+CU{2+ zlu+C2Kf@9hP#V1l0tB%$)#@U#dDB&&@A%5=%P+OGZzz#$Y2E7$uF*}4@hg8dvP$DX z$&3~~IA{Ztm4paKo1b@w3*~?3_w8oSuXBs&d14ipA!f-fSH)tzce0mN)rq`L)JTmv zD~K0=2=QmkPyIA;10ld7ZK~YqyVTB%gw+$q7bQyFQor&becaa6>F#ULB-F`djj&hKMNP8S|=PhTDtf^3g4 zMMFidC+!zVE5_x0pl4e#VFHVF+?hDoeEeV&6?v}6jJA zjbpO=uWKc(=R>lRiSLd8`L49n@Fd|(Qhiqi3!>hJq0-PA_}U40ZoZf9M~;(Z+P^&g zDG;|ZRT09C_yvJ!&IL%67f0MmzuX^KbffZJ?}zI4ii+UPTxe(mQ~mzD(PYPYNJ8! zX|Mk}0X^2*pgJg*I}uwED{K{3s8<4k|~K2Lk2@=2nc z)k;ssd_F7r)&*U1kiTrEAkg@Pnaj?Z^6I|?|G`v0!(E3g=ZMAXTatv^kkKM3CRXN_ zPh)p^w$V&sA2Xh4X;hc(queL(s!X(HLm!;Dv@y#BX3pTUBsmE>`s5`+-|XQD!`2B*~XMUZ7Z`+qs)&(~;@0eW+)kX{`hADSMT%1+7r#Qtk#a58(x z)ZEz=EvrjK{VV;SOFQuyYA2au1QmPlXP?4$(vBgvmp?-Dq2j;n`JbvWJ}{OBhj1(n zeGo77I$y)>^eBOz=d-TVLHDk9yZ&(MXSxaOg;)$9iV?)B;KQIxIMn*VDGFRo-K@m4 zN6bcO@cHkKHf4VuBZ!{I*1Lvk(&3c39-HWFXgk{S2O$v}h@GqPZC8GA*rdo(spYy* z_)9y%%Eai`Nfeep`K z2aWJA)mujp&d-F(TbkPJ(%X6RU-PQvaXUzf&fjgUTDk@-oT-b7v^&1OA-GRr^_*CJ zltWg$v7@qu^grg7Gd-{7mFPkf2%OnuS(d;VA>NXufXTlC1c%i9@xOug&0Siy3?FtE zc=ZaD>89Htk7&*R?&Nq}3XVJ4TxbFeHy@i~8`ODoJTI%z=PPqf54y%4B5l~K!HXnJ z>{q72e+YGL2<#^M{<~1=g!V%<|ASN^NT1*jumEQ}aak*!Q_`PO$ApZQl1 zmXpvN8I!0sF;=Q!7ZXx@3$RWJQ?JtQhuBDY-XG4VIIPnaTaStHMCoXjX& zhI0W|OYWr$=FFSpm?p#GjAif~Wu-lKy~PfKXa^w5Sl4)LXE2OeU%|w@836q)qD(^|41C;_r1L^zEHrCf{Nh z99PIvKffu(6Tw2@yr!JwI8)JQxGUDJ?`yx&Z#|<6D9f++Am1?FnEvGWxIZ3a92;B; z)qqU1=c0p+NtMsiYfM_wq5`R2{B9Pfbrk8`~uZI#=*NM>=&FE3=q^+bW)N-Xn=(fg#QDRq^UOC#FoY+?mn0eHn(U@g7{M9Zsx%MPAPp+r3yaP@qRiSl4w8gkF5IN0~9e$%v`%ut!d3*zE={v zr&1lWp9fP#k{eHtNQ@X0gcB>}6VjxP$tHU(gHjKAi6}t_-Ou%mpRxf#wdzsl@c&~& h>HlM1$#kBBAIA?+aY%IeUs!H{fv$;8l@>1g{{bBj#4P{- literal 0 HcmV?d00001