-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
1 lines (1 loc) · 58.5 KB
/
index.html
1
<!doctypehtml><html lang=en-us><head><meta charset=utf-8><meta content="text/html; charset=utf-8"http-equiv=Content-Type><meta content="C64 emulator iPad iPhone demo browser csdb. Compatible to the progressive-web-app (PWA) standard."name=description><title>vc64web C64 emulator iPad iPhone</title><link href=img/favicon.ico rel=icon><meta content="width=device-width,initial-scale=1,user-scalable=no,viewport-fit=cover"name=viewport><link href=manifest.json rel=manifest><link href=img/icon-96x96.png rel=apple-touch-icon><meta content=yes name=apple-mobile-web-app-capable><meta content=yes name=mobile-web-app-capable><meta content=black-translucent name=apple-mobile-web-app-status-bar><meta content=black name=theme-color><link href=css/bootstrap.min.css rel=stylesheet><link href=css/vc64.css rel=stylesheet><script src=js/jquery-3.5.0.min.js></script><script src=js/bootstrap.bundle.min.js></script><script src=js/ringbuffer.js></script><script src=js/vc64_browser.js></script><script src=js/vc64_ui.js></script><script src=js/vc64_storage.js></script><script src=js/vc64_keyboard.js></script><script src=js/vc64_action_script.js></script><script src=js/vc64_updater.js></script><script src=js/virtualjoystick.js></script><script src=js/jszip.min.js></script><style>.emscripten{padding-right:0;margin-left:auto;margin-right:auto;display:block}textarea.emscripten{font-family:monospace;width:80%}div.emscripten{text-align:center}div.emscripten_border{border:0 solid #000}canvas.emscripten{border:0 none}.spinner{height:50px;width:50px;margin:0 auto;-webkit-animation:rotation .8s linear infinite;-moz-animation:rotation .8s linear infinite;-o-animation:rotation .8s linear infinite;animation:rotation .8s linear infinite;border-left:10px solid #0096f0;border-right:10px solid #0096f0;border-bottom:10px solid #0096f0;border-top:10px solid #6400c8;border-radius:100%;background-color:#c864fa}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotation{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@-o-keyframes rotation{from{-o-transform:rotate(0)}to{-o-transform:rotate(360deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(360deg)}}</style></head><body data-theme=dark oncontextmenu=event.preventDefault() warpstate=0><figure id=spinner style=overflow:visible><div class=spinner></div><center style=margin-top:.5em><strong>booting into Virtual C64 WebEdition...</strong></center></figure><div class=emscripten id=status>Downloading...</div><div class=emscripten><progress hidden id=progress max=100 value=0></progress></div><div class=emscripten_border id=div_canvas style=width:100vw;height:100vh><canvas class=emscripten height=205 id=canvas oncontextmenu=event.preventDefault() tabindex=-1 width=326></canvas></div><div class=collapse id=virtual_keyboard style=user-select:none><div class=justify-content-center id=vbk_scroll_area style=display:flex;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden><div style=display:flex;padding-top:2px;position:relative;min-width:0;max-width:100%><div id=divKeyboardRows></div></div></div></div><button class="btn btn-sm icon"type=button id=button_show_menu data-toggle=collapse aria-expanded=false aria-controls=navbar data-target=#navbar style=position:fixed;top:6px;left:0;z-index:200><svg class="bi bi-list"fill=currentColor height=auto viewBox="0 -1 16 17"width=1.6em xmlns=http://www.w3.org/2000/svg><path d="M2.5 11.5A.5.5 0 0 1 3 11h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4A.5.5 0 0 1 3 3h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"fill-rule=evenodd /></svg></button><div class=collapse id=navbar><div id=navgrid><div class=left><span style=width:40px;display:inline-block></span> <button class="btn btn-sm icon"type=button id=button_reset data-toggle=tooltip data-placement=top title=reset><svg class="bi bi-skip-start-fill"fill=currentColor height=auto viewBox="0 0 16 16"width=1.6em xmlns=http://www.w3.org/2000/svg style=margin-top:1px><path d="M4.5 3.5A.5.5 0 0 0 4 4v8a.5.5 0 0 0 1 0V4a.5.5 0 0 0-.5-.5z"fill-rule=evenodd /><path d="M4.903 8.697l6.364 3.692c.54.313 1.232-.066 1.232-.697V4.308c0-.63-.692-1.01-1.232-.696L4.903 7.304a.802.802 0 0 0 0 1.393z"/></svg></button> <span data-toggle=tooltip data-placement=top title=pause><button class="btn btn-sm icon"type=button id=button_run><svg class="bi bi-pause-fill"fill=currentColor height=auto viewBox="0 0 16 16"width=1.6em xmlns=http://www.w3.org/2000/svg><path d="M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5zm5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5z"/></svg></button> </span><button class="btn btn-sm icon"type=button id=button_ff data-toggle=tooltip data-placement=top title=warp style=position:relative><div id=warping><svg class="bi bi-fast-forward-fill"fill=currentColor height=1.6em viewBox="0 0 16 16"width=1.6em xmlns=http://www.w3.org/2000/svg><path d="M7.596 7.304a.802.802 0 0 1 0 1.392l-6.363 3.692C.713 12.69 0 12.345 0 11.692V4.308c0-.653.713-.998 1.233-.696z"/><path d="M15.596 7.304a.802.802 0 0 1 0 1.392l-6.363 3.692C8.713 12.69 8 12.345 8 11.692V4.308c0-.653.713-.998 1.233-.696z"/></svg><div style="position:absolute;bottom:-1px;font-size:x-small;animation:blink 1s infinite">warp</div></div><div id=no_warping><svg class="bi bi-fast-forward"fill=currentColor height=1.6em viewBox="0 0 16 16"width=1.6em xmlns=http://www.w3.org/2000/svg><path d="M6.804 8 1 4.633v6.734zm.792-.696a.802.802 0 0 1 0 1.392l-6.363 3.692C.713 12.69 0 12.345 0 11.692V4.308c0-.653.713-.998 1.233-.696z"/><path d="M14.804 8 9 4.633v6.734zm.792-.696a.802.802 0 0 1 0 1.392l-6.363 3.692C8.713 12.69 8 12.345 8 11.692V4.308c0-.653.713-.998 1.233-.696z"/></svg></div></button> <button class="btn btn-sm icon"type=button id=button_speed_toggle data-toggle=tooltip data-placement=top title="toggle speed"><svg class="bi bi-speedometer"fill=currentColor height=1.6em viewBox="0 0 16 16"width=1.6em xmlns=http://www.w3.org/2000/svg><path d="M8 2a.5.5 0 0 1 .5.5V4a.5.5 0 0 1-1 0V2.5A.5.5 0 0 1 8 2M3.732 3.732a.5.5 0 0 1 .707 0l.915.914a.5.5 0 1 1-.708.708l-.914-.915a.5.5 0 0 1 0-.707M2 8a.5.5 0 0 1 .5-.5h1.586a.5.5 0 0 1 0 1H2.5A.5.5 0 0 1 2 8m9.5 0a.5.5 0 0 1 .5-.5h1.5a.5.5 0 0 1 0 1H12a.5.5 0 0 1-.5-.5m.754-4.246a.39.39 0 0 0-.527-.02L7.547 7.31A.91.91 0 1 0 8.85 8.569l3.434-4.297a.39.39 0 0 0-.029-.518z"/><path d="M6.664 15.889A8 8 0 1 1 9.336.11a8 8 0 0 1-2.672 15.78zm-4.665-4.283A11.95 11.95 0 0 1 8 10c2.186 0 4.236.585 6.001 1.606a7 7 0 1 0-12.002 0"fill-rule=evenodd /></svg></button> <button class="btn btn-sm icon"type=button id=button_take_snapshot data-toggle=tooltip data-placement=top title="take snapshot / export disk"><svg class="bi bi-box-arrow-in-down"fill=currentColor height=auto viewBox="0 0 16 16"width=1.6em xmlns=http://www.w3.org/2000/svg><path d="M4.646 8.146a.5.5 0 0 1 .708 0L8 10.793l2.646-2.647a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 0 1 0-.708z"fill-rule=evenodd /><path d="M8 1a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-1 0v-9A.5.5 0 0 1 8 1z"fill-rule=evenodd /><path d="M1.5 13.5A1.5 1.5 0 0 0 3 15h10a1.5 1.5 0 0 0 1.5-1.5v-8A1.5 1.5 0 0 0 13 4h-1.5a.5.5 0 0 0 0 1H13a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5v-8A.5.5 0 0 1 3 5h1.5a.5.5 0 0 0 0-1H3a1.5 1.5 0 0 0-1.5 1.5v8z"fill-rule=evenodd /></svg></button> <span data-toggle=modal data-target=#snapshotModal><button class="btn btn-sm icon"type=button id=button_snapshots data-toggle=tooltip data-placement=top title="snapshot / scene browser"><svg class="bi bi-collection-fill"fill=currentColor height=auto viewBox="0 0 16 16"width=1.6em xmlns=http://www.w3.org/2000/svg><rect height=10 rx=1.5 transform="matrix(1 0 0 -1 0 14.5)"width=16 /><path d="M2 3a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 0-1h-11A.5.5 0 0 0 2 3zm2-2a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7A.5.5 0 0 0 4 1z"fill-rule=evenodd /></svg></button> </span><span data-toggle=collapse data-target=#virtual_keyboard aria-controls=virtual_keyboard aria-expanded=false><button class="btn btn-sm icon mr-0"type=button id=button_keyboard data-toggle=tooltip data-placement=top title="virtual keyboard"><svg class="bi bi-type"fill=currentColor height=auto viewBox="0 0 16 16"width=1.6em xmlns=http://www.w3.org/2000/svg><path d="M2.244 13.081l.943-2.803H6.66l.944 2.803H8.86L5.54 3.75H4.322L1 13.081h1.244zm2.7-7.923L6.34 9.314H3.51l1.4-4.156h.034zm9.146 7.027h.035v.896h1.128V8.125c0-1.51-1.114-2.345-2.646-2.345-1.736 0-2.59.916-2.666 2.174h1.108c.068-.718.595-1.19 1.517-1.19.971 0 1.518.52 1.518 1.464v.731H12.19c-1.647.007-2.522.8-2.522 2.058 0 1.319.957 2.18 2.345 2.18 1.06 0 1.716-.43 2.078-1.011zm-1.763.035c-.752 0-1.456-.397-1.456-1.244 0-.65.424-1.115 1.408-1.115h1.805v.834c0 .896-.752 1.525-1.757 1.525z"/></svg></button> </span><button class="btn btn-sm icon"type=button id=button_custom_key data-toggle=tooltip data-placement=top title="action buttons"><svg class="bi bi-plus"fill=currentColor height=auto viewBox="0 0 16 16"width=1.6em xmlns=http://www.w3.org/2000/svg><path d="M8 3.5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5H4a.5.5 0 0 1 0-1h3.5V4a.5.5 0 0 1 .5-.5z"fill-rule=evenodd /><path d="M7.5 8a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H8.5V12a.5.5 0 0 1-1 0V8z"fill-rule=evenodd /></svg></button><form id=theFileInput><div class=px-1 id=drop_zone data-placement=bottom data-toggle=tooltip title="drop .g64 .d64 .t64 .crt .prg .tap .vc64 .zip files or links from CSDb.dk into here, or just click into the drop zone">file slot</div><input id=filedialog type=file name=theFileDialog style=display:none></form><button class="btn btn-sm icon hidden"type=button id=button_fullscreen><svg class="bi bi-fs"fill=currentColor height=1.6em viewBox="0 0 16 16"width=1.6em xmlns=http://www.w3.org/2000/svg data-placement=top data-toggle=tooltip title=fullscreen id=svg_fullscreen></svg></button> <button class="btn btn-sm icon"type=button id=button_settings data-toggle=modal data-target=#modal_settings><svg class="bi bi-gear-fill"fill=currentColor height=auto viewBox="0 0 16 16"width=1.6em xmlns=http://www.w3.org/2000/svg data-placement=top data-toggle=tooltip title=settings><path d="M9.405 1.05c-.413-1.4-2.397-1.4-2.81 0l-.1.34a1.464 1.464 0 0 1-2.105.872l-.31-.17c-1.283-.698-2.686.705-1.987 1.987l.169.311c.446.82.023 1.841-.872 2.105l-.34.1c-1.4.413-1.4 2.397 0 2.81l.34.1a1.464 1.464 0 0 1 .872 2.105l-.17.31c-.698 1.283.705 2.686 1.987 1.987l.311-.169a1.464 1.464 0 0 1 2.105.872l.1.34c.413 1.4 2.397 1.4 2.81 0l.1-.34a1.464 1.464 0 0 1 2.105-.872l.31.17c1.283.698 2.686-.705 1.987-1.987l-.169-.311a1.464 1.464 0 0 1 .872-2.105l.34-.1c1.4-.413 1.4-2.397 0-2.81l-.34-.1a1.464 1.464 0 0 1-.872-2.105l.17-.31c.698-1.283-.705-2.686-1.987-1.987l-.311.169a1.464 1.464 0 0 1-2.105-.872l-.1-.34zM8 10.93a2.929 2.929 0 1 0 0-5.86 2.929 2.929 0 0 0 0 5.858z"fill-rule=evenodd /></svg></button></div><div class=right><div><select class=custom-select data-placement=left data-toggle=tooltip id=port1 title="game port 1"><option value=none>none</option><option value=keys>cursor keys, space to fire</option><option value=touch>touch joystick (move|fire)</option><option value=mouse>mouse</option><option value="mouse touchpad2">mouse touchpad (move|btn/btn)</option></select></div><div><select class=custom-select data-placement=left data-toggle=tooltip id=port2 title="game port 2"><option value=none>none</option><option value=keys>cursor keys, space to fire</option><option value=touch>touch joystick (move|fire)</option><option value=mouse>mouse</option><option value="mouse touchpad2">mouse touchpad (move|btn/btn)</option></select></div></div></div></div><div class="mt-1 row"id=output_row><div class="px-1 col-12"><div id=output style=height:164px;width:100%;padding:1px;overflow-y:scroll;resize:vertical;display:flex;flex-direction:column-reverse;font-size:smaller></div></div></div><div class="alert alert-darkest"id=alert_reset style=display:none role=alert><span class=ml-4>resetting machine, please wait ...</span></div><div class="alert alert-darkest"id=alert_wait style=display:none role=alert><span>loading please wait ...</span><div class=progress><div class="progress-bar progress-bar-animated progress-bar-striped"style=width:100% role=progressbar aria-valuemax=100 aria-valuemin=0 aria-valuenow=100></div></div></div><div class="fade modal"id=snapshotModal role=dialog aria-hidden=true tabindex=-1><div id=view_detail style=display:none tabindex=-1><button type=button id=detail_back><svg class="bi bi-arrow-left"fill=currentColor height=1.6em viewBox="0 0 16 16"width=1.6em xmlns=http://www.w3.org/2000/svg><path d="M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8z"fill-rule=evenodd /></svg></button><div id=detail_content></div></div><div class="modal-dialog modal-xl"role=document><div class=modal-content><div class=modal-header><div class=row style=width:100%><div class="mt-2 col-sm btn-group btn-group-toggle"data-toggle=buttons><label class="btn btn-primary active"><input id=sel_browser_snapshots type=radio name=options checked> snapshots</label> <label class="btn btn-secondary"><input id=sel_browser_csdb type=radio name=options> CSDb.dk</label></div><div class="mt-2 col-sm input-group"><div class=input-group-prepend><span class=input-group-text id=search_symbol><svg class="bi bi-search"fill=currentColor height=1.2em viewBox="0 0 16 16"width=1.2em xmlns=http://www.w3.org/2000/svg><path d="M10.442 10.442a1 1 0 0 1 1.415 0l3.85 3.85a1 1 0 0 1-1.414 1.415l-3.85-3.85a1 1 0 0 1 0-1.415z"fill-rule=evenodd /><path d="M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11zM13 6.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0z"fill-rule=evenodd /></svg></span></div><input id=search class=form-control placeholder="search snapshots (local browser storage)"aria-label=search></div></div><div class="mt-2 mr-1"id=div_like></div><button class="close px-1 py-0"type=button data-dismiss=modal aria-label=Close><span aria-hidden=true>×</span></button></div><div class=modal-body><div class="container scrollx-group"id=container_snapshots></div></div><div class=modal-footer><button class="btn btn-secondary"type=button data-dismiss=modal>Close</button></div></div></div></div><div class="fade modal"id=modal_roms aria-labelledby=snapshotModalLabel aria-hidden=true role=dialog tabindex=-1><div class="modal-dialog modal-lg"role=document><div class=modal-content><div class=modal-header><h5 class=modal-title id=snapshotModalLabel><img src=img/vc64web.png style=height:50px> SYSTEM ROMS</h5><button class=close type=button data-dismiss=modal aria-label=Close><span aria-hidden=true>×</span></button></div><div class=modal-body>The emulator needs system ROM files. Please drag the missing files into the empty chip sockets. Or just touch or click the sockets.<br><br><div class="mt-4 container"><div class="row my-2"><div class="col mx-2"><div class="container card mb-3"style=max-width:540px><div class="row no-gutters"><div class=col-md-8><div class=card-body><h5 class=card-title>basic rom</h5><p class=card-text>(required)</p><button class="btn btn-sm icon"type=button id=button_delete_basic><svg class="bi bi-trash-fill"fill=currentColor height=auto viewBox="0 0 16 16"width=1.6em xmlns=http://www.w3.org/2000/svg><path d="M2.5 1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1H3v9a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V4h.5a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H10a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1H2.5zm3 4a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5zM8 5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7A.5.5 0 0 1 8 5zm3 .5a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0v-7z"fill-rule=evenodd /></svg></button></div></div><div class=col-md-4><img src=img/rom_empty.png alt=... class=card-img id=rom_basic></div></div></div></div><div class="col mx-2"id=kernal_basic><div class="container card mb-3"style=max-width:540px><div class="row no-gutters"><div class=col-md-4><img src=img/rom_empty.png alt=... class=card-img id=rom_kernal></div><div class=col-md-8><div class=card-body><h5 class=card-title>kernal rom</h5><p class=card-text>(required)</p><button class="btn btn-sm icon"type=button id=button_delete_kernal><svg class="bi bi-trash-fill"fill=currentColor height=auto viewBox="0 0 16 16"width=1.6em xmlns=http://www.w3.org/2000/svg><path d="M2.5 1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1H3v9a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V4h.5a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H10a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1H2.5zm3 4a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5zM8 5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7A.5.5 0 0 1 8 5zm3 .5a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0v-7z"fill-rule=evenodd /></svg></button></div></div></div></div></div></div><div class="row my-2"><div class="col mx-2"><div class="container card mb-3"style=max-width:540px><div class="row no-gutters"><div class=col-md-8><div class=card-body><h5 class=card-title>charset rom</h5><p class=card-text>(required)</p><button class="btn btn-sm icon"type=button id=button_delete_char_rom><svg class="bi bi-trash-fill"fill=currentColor height=auto viewBox="0 0 16 16"width=1.6em xmlns=http://www.w3.org/2000/svg><path d="M2.5 1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1H3v9a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V4h.5a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H10a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1H2.5zm3 4a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5zM8 5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7A.5.5 0 0 1 8 5zm3 .5a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0v-7z"fill-rule=evenodd /></svg></button></div></div><div class=col-md-4><img src=img/rom_empty.png alt=... class=card-img id=rom_charset></div></div></div></div><div class="col mx-2"><div class="container card mb-3"style=max-width:540px><div class="row no-gutters"><div class=col-md-4><img src=img/rom_empty.png alt=... class=card-img id=rom_disk_drive></div><div class=col-md-8><div class=card-body><h5 class=card-title>disk drive rom</h5><p class=card-text>(optional)<br><small class=text-muted>only .t64 .prg .crt .tap files will work without</small></p><button class="btn btn-sm icon"type=button id=button_delete_disk_drive_rom><svg class="bi bi-trash-fill"fill=currentColor height=auto viewBox="0 0 16 16"width=1.6em xmlns=http://www.w3.org/2000/svg><path d="M2.5 1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1H3v9a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V4h.5a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H10a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1H2.5zm3 4a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5zM8 5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7A.5.5 0 0 1 8 5zm3 .5a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0v-7z"fill-rule=evenodd /></svg></button></div></div></div></div></div></div><br>Once loaded VirtualC64web will try to store these files to your browsers local storage. Then on subsequent starts it will take the rom files from your browsers local storage instead of asking you again for them.</div></div><div class=modal-footer><div class=justify-start><button class="btn btn-primary"type=button id=button_fetch_open_roms><img src=img/mega.png> install open roms</button><a href=https://github.com/MEGA65/open-roms/tree/master/bin target=_blank> learn more...</a></div><button class="btn btn-secondary"type=button data-dismiss=modal>Close</button></div></div></div></div><div class="fade modal"id=modal_settings aria-labelledby=settingsModalLabel aria-hidden=true role=dialog tabindex=-1><div class="modal-dialog modal-lg"role=document><div class=modal-content><div class=modal-header><h5 class=modal-title id=settingsModalLabel><img src=img/vc64web.png style=height:50px>Settings</h5><button class=close type=button data-dismiss=modal aria-label=Close><span aria-hidden=true>×</span></button></div><div class=modal-body><p>most settings are permanent and will be saved to your local browser storage</p><button class="btn btn-primary mb-3 mt-2"type=button id=button_rom_dialog>C64 system roms ...</button><div class="custom-control custom-switch mt-1"><input id=dark_switch class=custom-control-input type=checkbox> <label class=custom-control-label for=dark_switch>dark mode</label></div><div class="custom-control custom-switch mt-1"><input id=pixel_art_switch class=custom-control-input type=checkbox> <label class=custom-control-label for=pixel_art_switch data-placement=right data-toggle=tooltip title="on safari webgl must be deactivated for pixel art">pixel art</label></div><div class="custom-control custom-switch mt-1"><input id=webgl_switch class=custom-control-input type=checkbox> <label class=custom-control-label for=webgl_switch>on next start use accelerated WebGL</label></div><div class="custom-control custom-switch mt-1"><input id=warp_switch class=custom-control-input type=checkbox> <label class=custom-control-label for=warp_switch>warp during disk load</label></div><div class="custom-control custom-switch mt-1"><input id=borderless_switch class=custom-control-input type=checkbox> <label class=custom-control-label for=borderless_switch>borderless</label></div><div class="custom-control custom-switch mt-1"><input id=wide_screen_switch class=custom-control-input type=checkbox> <label class=custom-control-label for=wide_screen_switch>cinematic wide screen</label></div><div class="custom-control custom-switch mt-2"><input id=wake_lock_switch class=custom-control-input type=checkbox> <label class=custom-control-label for=wake_lock_switch>wake lock</label> <span style=font-size:smaller class=ml-1 id=wake_lock_status>(request to stay awake while running, prevent thereby system auto off or screen dimming)</span></div><div class="custom-control custom-switch mt-1"><input id=auto_snapshot_switch class=custom-control-input type=checkbox> <label class=custom-control-label for=auto_snapshot_switch data-placement=top data-toggle=tooltip title="you find auto snapshots in the first row of the snapshot browser">save auto snapshots</label></div><div class="custom-control custom-switch mt-1"><input id=symbolic_mapping_switch class=custom-control-input type=checkbox> <label class=custom-control-label for=symbolic_mapping_switch>use symbolic keyboard mapping (instead of positional)</label></div><div class="custom-control custom-switch mt-1"><input id=movable_action_buttons_in_settings_switch class=custom-control-input type=checkbox> <label class=custom-control-label for=movable_action_buttons_in_settings_switch data-placement=top data-toggle=tooltip>movable action buttons</label></div><div class=help_text id=move_action_buttons_label_settings style=font-size:small></div><div class="custom-control custom-switch mt-2"><input id=auto_selecting_app_title_switch class=custom-control-input type=checkbox> <label class=custom-control-label for=auto_selecting_app_title_switch data-placement=top data-toggle=tooltip>'auto selecting' action button groups on media insert</label></div><div class=help_text id=auto_select_on_help style=font-size:small>currently <span>auto selecting</span> snapshot names and action button groups based on the filename of the mounted media. (recommended for single disk based games or multi disk based games in a zip archive)</div><div class=help_text id=auto_select_off_help style=font-size:small>currently <span>auto selecting=off</span> manual selection of action button group (recommended when operating on multiple disks which are not bundled in a zip archive.)</div><div class="mt-4 container justify-content-start row"><div class="mt-1 dropdown mr-1"><button class="btn btn-primary dropdown-toggle text-right"type=button id=button_speed data-toggle=dropdown aria-expanded=false aria-haspopup=true>speed = 100%</button><div class="dropdown-menu dropdown-menu-right"id=choose_speed aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item>every 2nd vsync</a> <a href=# class=dropdown-item>vsync</a> <a href=# class=dropdown-item>2 frames on vsync</a> <a href=# class=dropdown-item>50%</a> <a href=# class=dropdown-item>75%</a> <a href=# class=dropdown-item>100%</a> <a href=# class=dropdown-item>120%</a> <a href=# class=dropdown-item>160%</a> <a href=# class=dropdown-item>200%</a></div></div><div class="mt-1 ml-3 setting_text"id=speed_text></div></div><div class="mt-4 container justify-content-start row"><div class="dropdown mr-1 mt-4"><button class="btn btn-primary dropdown-toggle text-right"type=button id=button_run_ahead data-toggle=dropdown aria-expanded=false aria-haspopup=true>run ahead frames = 0</button><div class="dropdown-menu dropdown-menu-right"id=choose_run_ahead aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item>0 frame</a> <a href=# class=dropdown-item>1 frame</a> <a href=# class=dropdown-item>2 frames</a> <a href=# class=dropdown-item>3 frames</a> <a href=# class=dropdown-item>4 frames</a> <a href=# class=dropdown-item>5 frames</a> <a href=# class=dropdown-item>6 frames</a></div></div><div class="mt-1 ml-3 setting_text"id=run_ahead_text><span>run ahead</span> reduces input lag by pre computing frames. The lag improvement is 20ms per number of frames ahead. Basically emulation itself introduces a slight lag of less than 20ms. Therefore, setting <span style=text-wrap:nowrap>run ahead = 1 frame</span> already ensures the original responsive feeling. <span style=text-wrap:nowrap>run ahead = 0 frame</span> saves battery life at the cost of a slight lag.</div><br><div class="dropdown mr-1 mt-3"><button class="btn btn-primary dropdown-toggle text-right"type=button id=button_expansion_ram data-toggle=dropdown aria-expanded=false aria-haspopup=true>RAM Expansion = 0</button><div class="dropdown-menu dropdown-menu-right"id=choose_expansion_ram aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item>none</a> <a href=# class=dropdown-item>REU 128 KB</a> <a href=# class=dropdown-item>REU 256 KB</a> <a href=# class=dropdown-item>REU 512 KB</a> <a href=# class=dropdown-item>REU 2 MB</a> <a href=# class=dropdown-item>REU 4 MB</a> <a href=# class=dropdown-item>REU 8 MB</a> <a href=# class=dropdown-item>REU 16 MB</a> <a href=# class=dropdown-item>GeoRAM 512 KB</a> <a href=# class=dropdown-item>GeoRAM 1 MB</a> <a href=# class=dropdown-item>GeoRAM 2 MB</a> <a href=# class=dropdown-item>GeoRAM 4 MB</a></div></div></div><div class="row container justify-content-start mt-3"><div class="dropdown mr-1 mb-1"><button class="btn btn-primary dropdown-toggle text-right"type=button id=button_vic_rev data-toggle=dropdown aria-expanded=false aria-haspopup=true>vic-II model</button><div class="dropdown-menu dropdown-menu-right"id=choose_vic_rev aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item>PAL 50Hz 6569</a> <a href=# class=dropdown-item>PAL 50Hz 6569 R3</a> <a href=# class=dropdown-item>PAL 50Hz 8565</a> <a href=# class=dropdown-item>NTSC 60Hz 6567 R56A</a> <a href=# class=dropdown-item>NTSC 60Hz 6567</a> <a href=# class=dropdown-item>NTSC 60Hz 8562</a></div></div></div><div class="mt-2 container justify-content-start row"><div class="mt-1 dropdown mr-1"><button class="btn btn-primary dropdown-toggle text-right"type=button id=button_sid_model data-toggle=dropdown aria-expanded=false aria-haspopup=true>sid model 6581</button><div class="dropdown-menu dropdown-menu-right"id=choose_sid_model aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item>6581</a> <a href=# class=dropdown-item>8580</a></div></div><div class="mt-1 dropdown mr-1"><button class="btn btn-primary dropdown-toggle text-right"type=button id=button_2nd_sid data-toggle=dropdown aria-expanded=false aria-haspopup=true>2nd sid disabled</button><div class="dropdown-menu dropdown-menu-right"id=choose_2nd_sid_addr aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item>disabled</a> <a href=# class=dropdown-item>enabled at $d420</a> <a href=# class=dropdown-item>enabled at $d440</a> <a href=# class=dropdown-item>enabled at $d460</a> <a href=# class=dropdown-item>enabled at $d500</a></div></div><div class="mt-1 dropdown mr-1"><button class="btn btn-primary dropdown-toggle text-right"type=button id=button_sid_engine data-toggle=dropdown aria-expanded=false aria-haspopup=true>ReSID fast</button><div class="dropdown-menu dropdown-menu-right"id=choose_sid_engine aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item>ReSID fast</a> <a href=# class=dropdown-item>ReSID interpolate</a> <a href=# class=dropdown-item>ReSID resample</a></div></div><div class="mt-1 dropdown mr-1"><button class="btn btn-primary dropdown-toggle text-right"type=button id=button_audio_device data-toggle=dropdown aria-expanded=false aria-haspopup=true>mono or stereo audio</button><div class="dropdown-menu dropdown-menu-right"id=choose_audio_device aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item style=display:none>main thread (mono)</a> <a href=# class=dropdown-item>mono audio</a> <a href=# class=dropdown-item>stereo audio</a></div></div></div><div id=mastervolume><label for=volume-slider id=volumetext>Volume</label> <input id=volume-slider type=range value=0.5 max=1 min=0 step=0.01></div><label class=mt-4>cut out sprite layers (stencil)</label><div class="row container"><div class="custom-control custom-checkbox custom-control-lg col"><input id=sprite0 class="custom-control-input layer"type=checkbox value=""> <label class="custom-control-label text-muted"for=sprite0>0</label></div><div class="custom-control custom-checkbox custom-control-lg col"><input id=sprite1 class="custom-control-input layer"type=checkbox value=""> <label class="custom-control-label text-muted"for=sprite1>1</label></div><div class="custom-control custom-checkbox custom-control-lg col"><input id=sprite2 class="custom-control-input layer"type=checkbox value=""> <label class="custom-control-label text-muted"for=sprite2>2</label></div><div class="custom-control custom-checkbox custom-control-lg col"><input id=sprite3 class="custom-control-input layer"type=checkbox value=""> <label class="custom-control-label text-muted"for=sprite3>3</label></div><div class="custom-control custom-checkbox custom-control-lg col"><input id=sprite4 class="custom-control-input layer"type=checkbox value=""> <label class="custom-control-label text-muted"for=sprite4>4</label></div><div class="custom-control custom-checkbox custom-control-lg col"><input id=sprite5 class="custom-control-input layer"type=checkbox value=""> <label class="custom-control-label text-muted"for=sprite5>5</label></div><div class="custom-control custom-checkbox custom-control-lg col"><input id=sprite6 class="custom-control-input layer"type=checkbox value=""> <label class="custom-control-label text-muted"for=sprite6>6</label></div><div class="custom-control custom-checkbox custom-control-lg col"><input id=sprite7 class="custom-control-input layer"type=checkbox value=""> <label class="custom-control-label text-muted"for=sprite7>7</label></div></div><div class="dropdown mr-1 mt-4"><button class="btn btn-primary dropdown-toggle text-right"type=button id=button_color_palette data-toggle=dropdown aria-expanded=false aria-haspopup=true>color</button><div class="dropdown-menu dropdown-menu-right"id=choose_color_palette aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item>color</a> <a href=# class=dropdown-item>black white</a> <a href=# class=dropdown-item>paper white</a> <a href=# class=dropdown-item>green</a> <a href=# class=dropdown-item>amber</a> <a href=# class=dropdown-item>sepia</a></div></div><div class=mt-4>power saving and warp speed (may affect compatibility)</div><div class=mt-2><div class="custom-control custom-switch mt-1"><input id=OPT_DRV_POWER_SAVE class=custom-control-input type=checkbox> <label class=custom-control-label for=OPT_DRV_POWER_SAVE data-placement=top data-toggle=tooltip title="disable this option in combination with Fast Loaders or programs that run directly in the memory of the floppy drive">put drives to sleep when not in use</label></div><div class="custom-control custom-switch mt-1"><input id=OPT_VIC_POWER_SAVE class=custom-control-input type=checkbox> <label class=custom-control-label for=OPT_VIC_POWER_SAVE data-placement=top data-toggle=tooltip title="disable this option in combination with programs that rely on exact collison register values while warp mode is active">run with reduced frame rate in warp mode</label></div><div class="custom-control custom-switch mt-1"><input id=OPT_SID_POWER_SAVE class=custom-control-input type=checkbox> <label class=custom-control-label for=OPT_SID_POWER_SAVE data-placement=top data-toggle=tooltip title="disable this option to avoid the unlikely, but possible case of corrupted sound being played after leaving warp mode">do not synthesize sound samples in warp mode</label></div></div><br><br>touch screen settings for virtual keyboard<div class=mt-2 style=font-size:smaller><button class="btn btn-primary dropdown-toggle text-right mb-1"type=button id=button_vbk_touch data-toggle=dropdown aria-expanded=false aria-haspopup=true>keycap touch behaviour=exact timing</button><div class="dropdown-menu dropdown-menu-right"id=choose_vbk_touch aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item>exact timing</a> <a href=# class=dropdown-item>smartphone like</a> <a href=# class=dropdown-item>mix of both</a></div><br><div class="ml-3 vbk_choice_text"id=exact_timing_text><span>exact timing</span> autorepeat and simultaneous keycap presses (disables default scroll gestures on keycaps, scroll gesture possible only on gaps around the keys)</div><div class="ml-3 vbk_choice_text"id=smartphone_like_text><span>smartphone like</span> native scroll gestures on keycaps (press starts after finger is lifted from keycap for a duration of 100ms)</div><div class="ml-3 vbk_choice_text"id=mix_of_both_text><span>mix of both</span> tries to mix both worlds... i.e. exact timing and simultaneous presses but also scrolls keyboard when swiping the finger on keycaps. disadvantage: also does a keypress when only scrolling was intended</div></div><div class="dropdown mr-1 mt-4"><button class="btn btn-primary dropdown-toggle text-right"type=button id=button_keycap_size data-toggle=dropdown aria-expanded=false aria-haspopup=true>keycap size=1.0</button><div class="dropdown-menu dropdown-menu-right"id=choose_keycap_size aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item>0.40</a> <a href=# class=dropdown-item>0.45</a> <a href=# class=dropdown-item>0.50</a> <a href=# class=dropdown-item>0.55</a> <a href=# class=dropdown-item>0.60</a> <a href=# class=dropdown-item>0.65</a> <a href=# class=dropdown-item>0.70</a> <a href=# class=dropdown-item>0.75</a> <a href=# class=dropdown-item>0.80</a> <a href=# class=dropdown-item>0.85</a> <a href=# class=dropdown-item>0.90</a> <a href=# class=dropdown-item>0.95</a> <a href=# class=dropdown-item>1.00</a> <a href=# class=dropdown-item>1.10</a> <a href=# class=dropdown-item>1.20</a> <a href=# class=dropdown-item>1.30</a></div></div><div class="dropdown mr-1 mt-4"><button class="btn btn-primary dropdown-toggle text-right"type=button id=button_keyboard_bottom_margin data-toggle=dropdown aria-expanded=false aria-haspopup=true>keyboard bottom margin=0px</button><div class="dropdown-menu dropdown-menu-right"id=choose_keyboard_bottom_margin aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item>auto</a> <a href=# class=dropdown-item>0px</a> <a href=# class=dropdown-item>5px</a> <a href=# class=dropdown-item>10px</a> <a href=# class=dropdown-item>15px</a> <a href=# class=dropdown-item>20px</a> <a href=# class=dropdown-item>25px</a></div></div><div class="dropdown mr-1 mt-4"><button class="btn btn-primary dropdown-toggle text-right"type=button id=button_keyboard_transparency data-toggle=dropdown aria-expanded=false aria-haspopup=true>keyboard transparency=0%</button><div class="dropdown-menu dropdown-menu-right"id=choose_keyboard_transparency aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item>0</a> <a href=# class=dropdown-item>15</a> <a href=# class=dropdown-item>25</a> <a href=# class=dropdown-item>50</a> <a href=# class=dropdown-item>60</a> <a href=# class=dropdown-item>75</a> <a href=# class=dropdown-item>80</a> <a href=# class=dropdown-item>85</a></div></div><div class="dropdown mr-1 mt-4"><button class="btn btn-primary dropdown-toggle text-right"type=button id=button_keyboard_sound_volume data-toggle=dropdown aria-expanded=false aria-haspopup=true>key press sound feedback=50%</button><div class="dropdown-menu dropdown-menu-right"id=choose_keyboard_sound_volume aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item>0</a> <a href=# class=dropdown-item>5</a> <a href=# class=dropdown-item>25</a> <a href=# class=dropdown-item>50</a> <a href=# class=dropdown-item>75</a> <a href=# class=dropdown-item>100</a></div></div><div class="custom-control custom-switch mt-2"><input id=key_haptic_feedback class=custom-control-input type=checkbox> <label class=custom-control-label for=key_haptic_feedback data-placement=right data-toggle=tooltip title="">haptic key press feedback</label></div><br><br>virtual touch joystick settings<div class=mt-2 style=font-size:smaller><button class="btn btn-primary dropdown-toggle text-right mb-1"type=button id=button_vjoy_touch data-toggle=dropdown aria-expanded=false aria-haspopup=true>positioning=base moves</button><div class="dropdown-menu dropdown-menu-right"id=choose_vjoy_touch aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item>base moves</a> <a href=# class=dropdown-item>base fixed on first touch</a> <a href=# class=dropdown-item>stationary middle</a> <a href=# class=dropdown-item>stationary bottom</a></div><br><div class="ml-3 vjoy_choice_text"id=base_moves_text><span>base moves</span> the base follows your finger when the stick circle passes the boundary of the base circle.</div><div class="ml-3 vjoy_choice_text"id=base_fixed_on_first_touch_text><span>base fixed on first touch</span> joystick base is fixed</div><div class="ml-3 vjoy_choice_text"id=stationary_middle_text><span>stationary middle</span> the base at a fixed middle y position and always visible</div><div class="ml-3 vjoy_choice_text"id=stationary_bottom_text><span>stationary bottom</span> the base at a fixed bottom y position and always visible</div></div><div class="dropdown mr-1 mt-4"><button class="btn btn-primary dropdown-toggle text-right"type=button id=button_vjoy_dead_zone data-toggle=dropdown aria-expanded=false aria-haspopup=true>virtual joysticks dead zone=12</button><div class="dropdown-menu dropdown-menu-right"id=choose_vjoy_dead_zone aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item>0</a> <a href=# class=dropdown-item>4</a> <a href=# class=dropdown-item>8</a> <a href=# class=dropdown-item>12</a> <a href=# class=dropdown-item>14</a> <a href=# class=dropdown-item>16</a> <a href=# class=dropdown-item>20</a> <a href=# class=dropdown-item>24</a></div></div><br><br>number of entries in each chart category row of the built in <span style=border-bottom:1px;border-bottom-style:outset class=mx-1>csdb scene browser</span> (<svg class="bi bi-collection-fill mx-1"fill=currentColor height=auto viewBox="0 0 16 16"width=1em xmlns=http://www.w3.org/2000/svg><rect height=10 rx=1.5 transform="matrix(1 0 0 -1 0 14.5)"width=16 /><path d="M2 3a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 0-1h-11A.5.5 0 0 0 2 3zm2-2a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7A.5.5 0 0 0 4 1z"fill-rule=evenodd /></svg>)<div class=mt-2 style=font-size:smaller><button class="btn btn-primary dropdown-toggle text-right mb-1"type=button id=button_csdb_count data-toggle=dropdown aria-expanded=false aria-haspopup=true>each chart category shows = 25 entries</button><div class="dropdown-menu dropdown-menu-right"id=choose_csdb_count aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item>25 entries</a> <a href=# class=dropdown-item>50 entries</a> <a href=# class=dropdown-item>75 entries</a> <a href=# class=dropdown-item>100 entries</a></div><br></div><div class="custom-control custom-switch mt-5"><input id=cb_debug_output class=custom-control-input type=checkbox> <label class=custom-control-label for=cb_debug_output>load logging console <span style=font-size:smaller>(after loaded click bottom right button)</span></label></div><hr><div class=mt-3 style=font-size:small><p><a href=https://vc64web.github.io/doc/index.html style=font-size:x-large>learn more about vc64web<svg class=ml-1 style=width:1em;height:1em><use xlink:href=img/sprites.svg#link /></svg></a><br><br>looking for my 16/32-Bit brother?<br><a href=https://vamigaweb.github.io/doc/about.html style=font-size:medium>take me to vAmigaWeb<svg class=ml-1 style=width:1em;height:1em><use xlink:href=img/sprites.svg#link /></svg></a></p><br><div class=mt-3 id=version_display>v?</div><br><br><br><small>DISCLAIMER: In 2021 the Demoscene was <a href=https://www.unesco.de/en/culture-and-nature/intangible-cultural-heritage/demoscene-culture-digital-real-time-animations class=mx-2 style=font-size:larger>accepted as UNESCO cultural heritage</a>. Following this spirit, vc64web wants to connect people to those amazing artwork and culture. It therefore links to demo content of the biggest external Demoscene website for the c64. <a href=http://csdb.dk class=mx-2 style=font-size:larger>Csdb.dk</a> is the biggest Demoscene site for the C64. The amount of demos is countless and every day new demos are added. Due to this nature we can not check the legal condition of every single demo from their site. The operators or creators of external web resources are soley responsible for their content. If you see an issue please contact us at <a href=https://github.com/vc64web/virtualc64web/issues class=mx-2 style=font-size:larger>github issues</a>.</small></div></div><div class=modal-footer><button class="btn btn-secondary"type=button data-dismiss=modal>Close</button></div></div></div></div><div class="fade modal"id=modal_reset role=dialog aria-hidden=true tabindex=-1><div class=modal-dialog role=document><div class=modal-content><div class=modal-header><h5 class=modal-title>resetting the C64</h5><button class=close type=button data-dismiss=modal aria-label=Close><span aria-hidden=true>×</span></button></div><div class=modal-body>By resetting the CPU and the chip set, the C64 will be forced to reboot. Current program state will be lost.<br><br>Disk drives and expansion port cartrigdes will stay connected.<br><br><span style=font-size:smaller>A soft reset emulates a real reset of the C64 which can be initiated via the reset line on the expansion port. A hard reset affects all components. The effect is similar to switching power off and on.<br><br></span><div style="display:grid;grid-template-columns:auto 1fr auto auto auto;align-items:center"><div><button class="btn btn-success mr-2"type=button id=button_detach_cartridge>detach cartridge</button></div><div></div><button class="btn btn-primary mr-2"type=button id=button_soft_reset_confirmed>soft reset</button> <button class="btn btn-primary mr-2"type=button id=button_reset_confirmed>hard reset <svg class="bi bi-arrow-return-left"fill=currentColor height=1em viewBox="0 0 16 16"width=1em xmlns=http://www.w3.org/2000/svg><path d="M14.5 1.5a.5.5 0 0 1 .5.5v4.8a2.5 2.5 0 0 1-2.5 2.5H2.707l3.347 3.346a.5.5 0 0 1-.708.708l-4.2-4.2a.5.5 0 0 1 0-.708l4-4a.5.5 0 1 1 .708.708L2.707 8.3H12.5A1.5 1.5 0 0 0 14 6.8V2a.5.5 0 0 1 .5-.5z"fill-rule=evenodd /></svg></button> <button class="btn btn-secondary"type=button data-dismiss=modal>cancel</button></div></div></div></div></div><div class="fade modal"id=modal_take_snapshot aria-labelledby=take_snapshot_ModalLabel aria-hidden=true role=dialog tabindex=-1><div class=modal-dialog role=document><div class=modal-content><div class=modal-header><h5 class=modal-title id=take_snapshot_ModalLabel>save a snapshot to local browser space</h5><button class=close type=button data-dismiss=modal aria-label=Close><span aria-hidden=true>×</span></button></div><div class=modal-body><div class="mb-3 input-group"><div class=input-group-prepend><span class=input-group-text id=inputGroup-sizing-default>app title</span></div><input id=input_app_title class=form-control spellcheck=false aria-label="Sizing example input"aria-describedby=inputGroup-sizing-default data-toggle=tooltip data-placement=right title="store in a snapshot browser row dedicated for this app title"></div></div><div class=modal-footer><div class=justify-start><button class="btn btn-success ml-2"type=button id=button_export_disk data-toggle=tooltip data-placement=top title="export the current state of disk in drive8"><svg class=mr-2 class="bi bi-box-arrow-up"fill=currentColor height=1.2em viewBox="0 0 16 16"width=1.2em xmlns=http://www.w3.org/2000/svg style=margin-top:-7px><path d="M3.5 6a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5h-2a.5.5 0 0 1 0-1h2A1.5 1.5 0 0 1 14 6.5v8a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5v-8A1.5 1.5 0 0 1 3.5 5h2a.5.5 0 0 1 0 1h-2z"fill-rule=evenodd /><path d="M7.646.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 1.707V10.5a.5.5 0 0 1-1 0V1.707L5.354 3.854a.5.5 0 1 1-.708-.708l3-3z"fill-rule=evenodd /></svg>disk in drive 8</button></div><button class="btn btn-primary"type=button id=button_save_snapshot>save <svg class="bi bi-arrow-return-left"fill=currentColor height=1em viewBox="0 0 16 16"width=1em xmlns=http://www.w3.org/2000/svg><path d="M14.5 1.5a.5.5 0 0 1 .5.5v4.8a2.5 2.5 0 0 1-2.5 2.5H2.707l3.347 3.346a.5.5 0 0 1-.708.708l-4.2-4.2a.5.5 0 0 1 0-.708l4-4a.5.5 0 1 1 .708.708L2.707 8.3H12.5A1.5 1.5 0 0 0 14 6.8V2a.5.5 0 0 1 .5-.5z"fill-rule=evenodd /></svg></button> <button class="btn btn-secondary"type=button data-dismiss=modal>cancel</button></div></div></div></div><div class="fade modal"id=modal_custom_key aria-labelledby=custom_key_ModalLabel aria-hidden=true role=dialog tabindex=-1><div class="modal-dialog modal-lg"role=document><div class=modal-content><div class="modal-header pb-0"><h5 class=modal-title id=custom_key_ModalLabel>define the action</h5><div style=display:flex><div id=other_buttons></div><button class=close type=button data-dismiss=modal aria-label=Close><span aria-hidden=true>×</span></button></div></div><div class="modal-body pt-0"><i>create app or game specific keyboard mappings or customized overlay buttons with free positioning that trigger your defined action.</i><div class="mt-4 w-100">action button (optional)<br><div class="mb-3 input-group"><input id=input_button_text class=form-control spellcheck=false autocomplete=off placeholder="Enter button text or use emojis 😊 as icon. Empty for no button."aria-label="action script"aria-describedby=inputGroup-sizing-default><div class=input-group-append><button class="btn btn-primary"id=button_reset_position style=border-top-right-radius:.25rem;border-bottom-right-radius:.25rem>reset position</button></div><div class=invalid-feedback id=input_button_text_error>specify either a button text or a keyboard shortcut or both</div></div></div><div class=mt-3 style=display:flex;justify-content:flex-start;width:100%><div class=dropdown><button class="btn btn-primary dropdown-toggle text-right"type=button id=button_padding data-toggle=dropdown aria-expanded=false aria-haspopup=true>btn size = default</button><div class="dropdown-menu dropdown-menu-right"id=choose_padding aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item>default</a> <a href=# class=dropdown-item>0.4</a> <a href=# class=dropdown-item>0.6</a> <a href=# class=dropdown-item>0.9</a> <a href=# class=dropdown-item>1.1</a> <a href=# class=dropdown-item>1.3</a> <a href=# class=dropdown-item>1.8</a> <a href=# class=dropdown-item>2.5</a> <a href=# class=dropdown-item>3</a> <a href=# class=dropdown-item>4</a> <a href=# class=dropdown-item>6</a></div></div><div class=dropdown><button class="btn btn-primary dropdown-toggle text-right ml-4"type=button id=button_opacity data-toggle=dropdown aria-expanded=false aria-haspopup=true>btn opacity = default</button><div class="dropdown-menu dropdown-menu-right"id=choose_opacity aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item>default</a> <a href=# class=dropdown-item>0.1</a> <a href=# class=dropdown-item>0.2</a> <a href=# class=dropdown-item>0.3</a> <a href=# class=dropdown-item>0.4</a> <a href=# class=dropdown-item>0.5</a> <a href=# class=dropdown-item>0.6</a> <a href=# class=dropdown-item>0.7</a> <a href=# class=dropdown-item>0.8</a> <a href=# class=dropdown-item>0.9</a> <a href=# class=dropdown-item>1.0</a></div></div></div><div class="mt-4 w-100">keyboard mapping shortcut<br><div class="mb-3 input-group"><input id=input_button_shortcut class="form-control ml-1"placeholder=(optional) spellcheck=false autocomplete=off style=width:8em;margin-left:0!important aria-label="action script"aria-describedby=inputGroup-sizing-default><div class=input-group-append><button class="btn btn-primary"id=button_delete_shortcut style=border-top-right-radius:.25rem;border-bottom-right-radius:.25rem>×</button></div><div class=invalid-feedback id=input_button_shortcut_error>specify either a button text or a keyboard shortcut or both</div></div></div>app scope<div class="custom-control custom-checkbox custom-control-lg"><input id=check_app_scope class=custom-control-input type=checkbox value=""> <label class="custom-control-label text-muted"for=check_app_scope id=check_app_scope_label></label></div><br>compose an action sequence, for example<br><ul><li><b class=select-all onclick=copy_to_clipboard(this)>loop5{j2fire1=>120ms=>j2fire0=>90ms}</b> which will shoot 5 times</li><li>or a literal action enclosed in single quotes e.g. <b class=select-all onclick=copy_to_clipboard(this)>'load"$",8'</b></li><li>or key combos e.g. CTRL+W <b class=select-all onclick=copy_to_clipboard(this)>pressControlLeft=>W=>releaseControlLeft</b></li><li>or <b class=select-all onclick=copy_to_clipboard(this)>pressSpace=>await_action_button_released=>releaseSpace</b></li>for press Space on button down and release Space on button up in locked mode (see settings or below)<li>for more complex tasks you can also choose to add a javascript ...</li></ul><div class="mt-2 input-group mb-3"><div class=dropdown style=display:flex;justify-content:space-between;width:100%><div style=display:flex><button class="btn btn-primary dropdown-toggle text-right"type=button id=button_script_language data-toggle=dropdown aria-expanded=false aria-haspopup=true>actionscript</button><div class="dropdown-menu dropdown-menu-right"id=choose_script_language aria-labelledby=dropdownMenuButton><a href=# class=dropdown-item>actionscript</a> <a href=# class=dropdown-item>javascript</a></div><div class="custom-control custom-checkbox custom-control-lg ml-3 mt-2"id=check_autocomplete><input id=check_livecomplete class=custom-control-input type=checkbox value=""> <label class="custom-control-label text-muted"for=check_livecomplete id=check_livecomplete_label>live complete</label></div></div><div class=dropdown><button class="btn btn-primary dropdown-toggle"type=button id=button_script_add data-toggle=collapse aria-expanded=false aria-controls=predefined_actions data-target=#predefined_actions style=height:100% aria-label="predefined actions">add</button></div><div class=collapse id=predefined_actions style=position:absolute;z-index:2000;right:0;top:39px><div><div class=dropdown><button class="btn btn-primary dropdown-toggle text-right"type=button data-toggle=dropdown aria-expanded=false aria-haspopup=true style=width:100%>javascript</button><div class="dropdown-menu dropdown-menu-right"id=add_javascript aria-labelledby=dropdownMenuButton></div></div><div class=dropdown><button class="btn btn-primary dropdown-toggle text-right"type=button data-toggle=dropdown aria-expanded=false aria-haspopup=true style=width:100%>special key</button><div class="dropdown-menu dropdown-menu-right"id=add_special_key aria-labelledby=dropdownMenuButton></div></div><div class=dropdown><button class="btn btn-primary dropdown-toggle text-right"type=button data-toggle=dropdown aria-expanded=false aria-haspopup=true style=width:100%>joyport1 action</button><div class="dropdown-menu dropdown-menu-right"id=add_joystick1_action aria-labelledby=dropdownMenuButton></div></div><div class=dropdown><button class="btn btn-primary dropdown-toggle text-right"type=button data-toggle=dropdown aria-expanded=false aria-haspopup=true style=width:100%>joyport2 action</button><div class="dropdown-menu dropdown-menu-right"id=add_joystick2_action aria-labelledby=dropdownMenuButton></div></div><div class=dropdown><button class="btn btn-primary dropdown-toggle text-right"type=button data-toggle=dropdown aria-expanded=false aria-haspopup=true style=width:100%>timer action</button><div class="dropdown-menu dropdown-menu-right"id=add_timer_action aria-labelledby=dropdownMenuButton></div></div><div class=dropdown><button class="btn btn-primary dropdown-toggle text-right"type=button data-toggle=dropdown aria-expanded=false aria-haspopup=true style=width:100%>system action</button><div class="dropdown-menu dropdown-menu-right"id=add_system_action aria-labelledby=dropdownMenuButton></div></div></div></div></div><div class=mt-1 style=width:100%><textarea aria-describedby=inputGroup-sizing-default aria-label="action script"class=form-control id=input_action_script placeholder=""style=width:100%></textarea><div class=invalid-feedback id=action_button_syntax_error></div></div></div><div class="custom-control custom-switch"><input id=move_action_buttons_switch class=custom-control-input type=checkbox> <label class=custom-control-label for=move_action_buttons_switch>moveable action buttons</label></div><div class=movable_button_label id=move_action_buttons_label style=margin-top:.5em></div></div><div class=modal-footer><button class="btn btn-danger justify-start"type=button id=button_delete_custom_button>delete</button> <button class="btn btn-primary"type=button id=button_save_custom_button>save</button> <button class="btn btn-secondary"type=button data-dismiss=modal>cancel</button></div></div></div></div><div class="fade modal"id=modal_file_slot aria-labelledby=file_slot_ModalLabel aria-hidden=true role=dialog tabindex=-1><div class=modal-dialog role=document><div class=modal-content><div class=modal-header><h5 class=modal-title id=file_slot_ModalLabel><span id=file_slot_dialog_label></span></h5><button class=close type=button data-dismiss=modal aria-label=Close><span aria-hidden=true>×</span></button></div><div class=modal-body><div class="custom-control custom-switch mt-1"id=div_auto_load><input id=auto_load class=custom-control-input type=checkbox> <label class=custom-control-label for=auto_load>auto load</label></div><div class="custom-control custom-switch mt-1"id=div_auto_press_play><input id=auto_press_play class=custom-control-input type=checkbox> <label class=custom-control-label for=auto_press_play>auto press play on tape</label></div><div class="custom-control custom-switch mt-1"id=div_auto_run><input id=auto_run class=custom-control-input type=checkbox> <label class=custom-control-label for=auto_run>auto run</label></div><div id=div_zip_content></div><div class="my-2 px-2 py-2 rounded"id=no_disk_rom_msg style=display:none>Warning: no rom-chip in floppy drive installed. D64 and G64 files are floppy images ... loading of files with these extensions will require a floppy rom. Head over to roms setting and provide the rom first. Or try to load a file with a different extension.</div></div><div class=modal-footer><div class=justify-start><button class="btn btn-secondary"type=button data-dismiss=modal>cancel</button> <button class="btn btn-success ml-2"type=button id=button_eject_zip>eject zip</button></div><button class="btn btn-primary"type=button id=button_insert_file>insert</button></div></div></div></div><div id=div_toast style=position:absolute;bottom:0;right:0><div class=toast role=alert aria-atomic=true aria-live=assertive><div class=toast-header id=toast_header><img src=img/icon-384x384.png alt=vAmigaWeb class="mr-2 rounded"style=width:38px;height:38px> <span style=font-size:larger class=mr-auto>newer version available</span> <button class="close mb-1 ml-2"type=button data-dismiss=toast aria-label=Close><span aria-hidden=true>×</span></button></div><div class=toast-body id=toast_body><div id=update_dialog></div><div class=mt-3><button class="btn btn-success mt-1"type=button onclick=execute_update()>upgrade</button> <button class="btn btn-secondary ml-1 mt-1"type=button data-dismiss=toast>stay on current version</button></div></div></div></div><script>let light_mode=!1;if(window.location.href.indexOf("#dark=false")>=0)light_mode=!0;else if(window.location.href.indexOf("#")>0){let e=decodeURIComponent(window.location.href.substring(window.location.href.indexOf("#")));if(0==e.indexOf("#{")&&e.endsWith("}"))try{let t=JSON.parse(e.substring(1)).dark;light_mode=void 0!==t&&0==t}catch(t){console.error(`error in JSON preconfig parameter: ${e}`),console.error(t),alert(`error in JSON preconfig parameter: \n${t}`)}}light_mode&&($("#canvas").css("background-color","var(--lighterbg)"),$("body").removeAttr("data-theme").css("background-color","var(--lighterbg) !important")),is_inside_scrollable=e=>{let t=!1,n=e.target;for(;n!=document.body;){if("virtual_keyboard"==n.id||void 0!==n.classList&&(n.classList.contains("modal-dialog")||n.classList.contains("modal-header")||n.classList.contains("modal-body")||n.classList.contains("modal-content")||n.classList.contains("modal-footer")||n.classList.contains("modal")||"output"==n.id)){t=!0;break}n=n.parentNode}return t},document.body.addEventListener("touchmove",(function(e){is_inside_scrollable(e)||e.preventDefault()}),{capture:!1,passive:!1});var db,statusElement=document.getElementById("status"),progressElement=document.getElementById("progress"),spinnerElement=document.getElementById("spinner"),Module={preRun:[function(){ENV.SDL_EMSCRIPTEN_KEYBOARD_ELEMENT="#canvas"}],postRun:[InitWrappers],print:function(){var e=document.getElementById("output");return e&&(e.value=""),async function(t){console.log(t),"undefined"!=typeof live_debug_output&&live_debug_output&&(arguments.length>1&&(t=Array.prototype.slice.call(arguments).join(" ")),e&&(e.innerHTML+=t+"<br>"))}}(),printErr:function(e){arguments.length>1&&(e=Array.prototype.slice.call(arguments).join(" ")),console.error(e)},canvas:function(){var e=document.getElementById("canvas");return e.addEventListener("webglcontextlost",(function(e){alert("WebGL context lost. You will need to reload the page."),e.preventDefault()}),!1),e}(),setStatus:function(e){if(Module.setStatus.last||(Module.setStatus.last={time:Date.now(),text:""}),e!==Module.setStatus.last.text){var t=e.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/),n=Date.now();t&&n-Module.setStatus.last.time<30||(Module.setStatus.last.time=n,Module.setStatus.last.text=e,t?(e=t[1],progressElement.value=100*parseInt(t[2]),progressElement.max=100*parseInt(t[4]),progressElement.hidden=!1,spinnerElement.hidden=!1):(progressElement.value=null,progressElement.max=null,progressElement.hidden=!0,e||(spinnerElement.hidden=!0)),statusElement.innerHTML=e)}},totalDependencies:0,monitorRunDependencies:function(e){this.totalDependencies=Math.max(this.totalDependencies,e),Module.setStatus(e?"Preparing... ("+(this.totalDependencies-e)+"/"+this.totalDependencies+")":"All downloads complete.")}};Module.setStatus("Downloading..."),window.onerror=function(e,t,n,o,s){e.startsWith("Uncaught ")&&_wasm_print_error(JSON.stringify(s));var r=["Error-Message: "+e,"URL: "+t,"Line: "+n,"Column: "+o,"Error object: "+JSON.stringify(s)].join("\n");document.getElementById("output").value+="\n"+r+"\n",Module.setStatus("Exception thrown, see JavaScript console"),spinnerElement.style.display="none",Module.setStatus=function(e){e&&Module.printErr("[post-exception status] "+e)}},"serviceWorker"in navigator&&navigator.serviceWorker.register("sw.js").then((e=>{console.log("service worker registered")})).catch((e=>console.log("service worker not registered",e))),$((function(){$('[data-toggle="popover"]').popover(),$("body").tooltip({selector:'[data-toggle="tooltip"]'})}))</script><script src=vc64.js async></script></body></html>