1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2024-10-01 20:57:38 +00:00
8bitworkshop/javatari/javatari.js

32 lines
459 KiB
JavaScript
Raw Normal View History

// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.
// Main Emulator parameters.
// You may change any of these after loading the project and before starting the Emulator
Javatari = {
VERSION: "version 0.91", // Don't change this one!
ROM_AUTO_LOAD_URL: "", // Full or relative URL of ROM
AUTO_START: true, // Set false to start emulator manually with Javatari.start()
SCREEN_ELEMENT_ID: "javatari-screen",
CONSOLE_PANEL_ELEMENT_ID: "javatari-console-panel",
CARTRIDGE_CHANGE_DISABLED: false,
SCREEN_RESIZE_DISABLED: false,
SCREEN_FULLSCREEN_DISABLED: false,
CARTRIDGE_LABEL_COLORS: "", // Space-separated colors for Label, Background, Border. e.g. "#f00 #000 transparent". Leave "" for defaults
PADDLES_MODE: -1, // -1 = auto, 0 = off, 1 = 0n
SCREEN_CRT_MODE: -1, // -1 = auto, 0 .. 4 = mode
SCREEN_OPENING_SIZE: 2, // 1 .. 4
SCREEN_CONTROL_BAR: 0, // 0 = Always, 1 = Hover, 2 = Original Javatari
SCREEN_NATURAL_FPS: 60, // 60, 50 fps
AUDIO_BUFFER_SIZE: 512, // 256, 512, 1024, 2048, 4096, 8192. More buffer = more delay
IMAGES_PATH: window.Javatari_IMAGES_PATH || "javatari/",
SHOW_ERRORS: true,
DEBUG_SCANLINE_OVERFLOW: false,
};
jt = window.jt || {};
for(var n in jt.Util=new function(){this.log=function(n){console.log(">> Javatari: "+n)},this.message=function(n){alert(n)},this.arraysEqual=function(n,e){var t=n.length;if(t!==e.length)return!1;for(;t--;)if(n[t]!==e[t])return!1;return!0},this.arrayFill=function(n,e){for(var t=n.length;t--;)n[t]=e;return n},this.arrayFillWithArrayClone=function(n,e){for(var t=n.length;t--;)n[t]=e.slice(0);return n},this.arrayFillSegment=function(n,e,t,r){for(var a=t;a-- >e;)n[a]=r;return n},this.arrayCopy=function(n,e,t,r,a){for(var i=e+a;e<i;)t[r++]=n[e++]},this.uInt32ArrayCopyToUInt8Array=function(n,e,t,r,a){var i=e+a;for(r*=4;e<i;){var o=n[e++];t[r++]=255&o,t[r++]=o>>8&255,t[r++]=o>>16&255,t[r++]=o>>>24}},this.arrayCopyCircularSourceWithStep=function(n,e,t,r,a,i,o){for(var A=e,C=i,D=i+o;C<D;)a[C]=n[0|A],C++,t<=(A+=r)&&(A-=t)},this.arrayRemove=function(n,e){var t=n.indexOf(e);t<0||n.splice(t,1)},this.booleanArrayToByteString=function(n){for(var e="",t=0,r=n.length;t<r;t++)e+=n[t]?"1":"0";return e},this.byteStringToBooleanArray=function(n){for(var e=[],t=0,r=n.length;t<r;t++)e.push("1"===n.charAt(t));return e},this.uInt8ArrayToByteString=function(n){for(var e="",t=0,r=n.length;t<r;t++)e+=String.fromCharCode(255&n[t]);return e},this.byteStringToUInt8Array=function(n){for(var e=[],t=0,r=n.length;t<r;t++)e.push(255&n.charCodeAt(t));return e},this.uInt32ArrayToByteString=function(n){for(var e="",t=0,r=n.length;t<r;t++){var a=n[t];e+=String.fromCharCode((4278190080&a)>>>24),e+=String.fromCharCode((16711680&a)>>>16),e+=String.fromCharCode((65280&a)>>>8),e+=String.fromCharCode(255&a)}return e},this.byteStringToUInt32Array=function(n){for(var e=[],t=0,r=n.length;t<r;)e.push(n.charCodeAt(t++)*(1<<24)+(n.charCodeAt(t++)<<16)+(n.charCodeAt(t++)<<8)+n.charCodeAt(t++));return e},this.uInt8BiArrayToByteString=function(n){for(var e="",t=0,r=n.length;t<r;t++)for(var a=0,i=n[t].length;a<i;a++)e+=String.fromCharCode(255&n[t][a]);return e},this.byteStringToUInt8BiArray=function(n,e){for(var t=[],r=0,a=n.length;r<a;){for(var i=new Array(e),o=0;o<e;o++)i[o]=255&n.charCodeAt(r++);t.push(i)}return t}},jt.M6502=function(){function n(){return[Jn,function(){Be("KIL/HLT/JAM")},function(){Q--}]}function e(n){return n(function(){Be("NOP/DOP")})}function t(n){return n(function(){var n,e,t,r;W?(9<(e=(15&H)+(15&(n=q))+Z)&&(e+=6),t=(H>>4)+(n>>4)+(15<e)<<4,ae(H+n+Z&255),ie(t),oe((H^t)&~(H^n)&128),159<t&&(t+=96),Ae(255<t),H=255&(t|15&e)):(Ae(255<(r=H+q+Z)),oe((H^r)&(q^r)&128),ae(H=255&r),ie(H))})}function r(n){return n(function(){ae(H&=q),ie(H)})}function a(n){return n(function(){var n=q;ae(H&n),oe(64&n),ie(n)})}function i(n){return n(function(){var n=H-q&255;Ae(q<=H),ae(n),ie(n)})}function o(n){return n(function(){var n=G-q&255;Ae(q<=G),ae(n),ie(n)})}function A(n){return n(function(){var n=J-q&255;Ae(q<=J),ae(n),ie(n)})}function C(n){return n(function(){ae(H^=q),ie(H)})}function D(n){return n(function(){ae(H=q),ie(H)})}function E(n){return n(function(){ae(G=q),ie(G)})}function s(n){return n(function(){ae(J=q),ie(J)})}function F(n){return n(function(){ae(H|=q),ie(H)})}function B(n){return n(function(){var n,e,t,r;W?(t=(H>>4)-((n=q)>>4)-((e=(15&H)-(15&n)-(1-Z))<0),e<0&&(e-=6),t<0&&(t-=6),Ae(256&~(r=H-n-(1-Z))),oe((H^n)&(H^r)&128),ae(255&r),ie(r),H=255&(t<<4|15&e)):(Ae(255<(r=H+(n=255&~q)+Z)),oe((H^r)&(n^r)&128),ae(H=255&r),ie(H))})}function c(n){return n(function(){Be("ANC"),ae(H&=q),N=Z=128&H?1:0})}function l(n){return n(function(){Be("LAX");var n=q;ae(G=H=n),ie(n)})}function u(n){return n(function(){q=H})}function d(n){return n(function(){q=G})}function f(n){return n(function(){q=J})}function h(n){return n(function(){Be("SAX"),q=H&G})}function p(n){return n(function(){Be("SHA"),q=H&G&1+(en>>>8)&255})}function P(n){return n(function(){Ae(127<q);var n=q<<1&255;ae(q=n),ie(n)})}function m(n){return n(function(){var n=q-1&255;ae(q=n),ie(n)})}function g(n){return n(function(){var n=q+1&255;ae(q=n),ie(n)})}function S(n){return n(function(){Z=1&q,ae(q>>>=1),N=0})}function v(n){return n(function(){var n=127<q,e=255&(q<<1|Z);q=e,Ae(n),ae(e),ie(e)})}function y(n){return n(functio