-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathindex.html
171 lines (163 loc) · 11.1 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
<!DOCTYPE HTML>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="description" content="Javascript based Atari ST Emulator">
<meta name="keywords" content="JavaScript, Atari, ST, Emulator, EstyJs">
<meta name="author" content="Darren Coles">
<html>
<head>
<title>EstyJs</title>
<link href='http://fonts.googleapis.com/css?family=Fauna+One' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="css/estyjs.css" />
<link href="css/jquery-ui-1.10.3.custom.min.css" type="text/css" rel="stylesheet">
<script src="jquery/jquery-1.9.1.js"></script>
<script src="jquery/jquery-ui-1.10.3.custom.min.js"></script>
<script src="estyjs.js"></script>
<script src="processor.js"></script>
<script src="keyboard.js"></script>
<script src="mfp.js"></script>
<script src="fdc.js"></script>
<script src="io.js"></script>
<script src="bug.js"></script>
<script src="display.js"></script>
<script src="memory.js"></script>
<script src="snapshot.js"></script>
<script src="sound.js"></script>
<script src="main.js"></script>
<script src="files.js"></script>
<script src="js-unzip.js"></script>
<script src="rawinflate.js"></script>
<script>
$(function() {
$("button").button();
document.getElementById('selectedFile').addEventListener('change', fileSelected, false);
document.getElementById('selectedFileB').addEventListener('change', fileSelected2, false);
$("#accordion").accordion();
estyjs = EstyJs("EstyJsOutput");
});
</script>
</head>
<body>
<header>EstyJS - The Javascript Atari ST Emulator</header>
<div id="accordion">
<h3>Atari ST</h3>
<div>
<img src="Atari_1040STf.jpg"/>
The Atari ST was a 16 bit home computer that was very popular in the late 80's and early 90's.
It was the direct competitor of the Commodore Amiga and both machines were based upon the 68000 cpu.
<br/><br/>
It was first released in 1985 and was very sucessful in the professional music industry due to having MIDI ports as standard.
</div>
<h3>EstyJS</h3>
<div>EstyJS is a javascript based emulator for the Atari ST. I was inspired to write this after completing the first release of my Acorn Electron emulator ElkJS.
<br/><br/>
<img src="Atari 520ST_inside.jpg"/><br/><br/>
EstyJS aims to emulate the ST accurately enough to be able to play many of the classic games made for this machine.
<br/><br />
The sourcecode for this emulator is available in my <a href="https://github.com/dmcoles/estyjs" >github</a> repository.
<br/><br/>
Please visit my forum to leave feedback, report bugs, talk about these (and other) JavaScript emulators <a href="http://emulatejs.englishboard.net/" >EmulateJS</a>
</div>
<h3>Usage</h3>
<div>
Work in progress<br/><br/>
Currently there are some things not emulated:
<ol>
<li>writing to floppies</li>
<li>Partial keyboard/mouse/joystick</li>
<li>timer pulse width & high accuracy < 1 scanline </li>
<li>border effects</li>
</ol>
<br/>
Hints:<br/>
<br/>Joystick 1 is emulated using cursor keys and ctrl (or a real usb joypad).
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
</div>
<h3>Credits</h3>
<div>
<u>EstyJS</u><br/><br/>
68000 emulation core - Rupert Hausberger (adapted from <a href="http://scriptedamigaemulator.net/">SAE</a> adaptation by Darren Coles)<br/><br/>
Atari ST image from wikipedia by <a href="http://en.wikipedia.org/wiki/File:Atari_1040STf.jpg"> Bill Bertram </a> <br/><br/>
Atari ST internals image from <a href="http://retrospec.sgn.net/users/tomcat/miodrag/Atari_ST/Atari_ST.htm" >retrospec</a> <br/><br/>
Everything else - (c) Darren Coles 2013.<br/><br/>
</div>
</div>
<div id="estyjs">
<canvas id = "EstyJsOutput" width="640" height="400" >
</canvas>
<div id = "buttonpanel">
<small><button id="btnFullscreen" onclick="fullScreen();">Expand</button></small>
<small><button id="btnLocked" onclick="lockMouse();">Lock</button></small>
<small><button onclick="reset()" id="btnReset">Reset</button></small>
<small><button onclick="pauseResume()" id="btnPause">Pause</button></small>
<small><button onclick="soundToggle()" id="btnSound">Turn sound on</button></small>
<br />
<div style="margin: 0px; padding:0px; clear: both; height: 6px">
</div>
<input type="file" id="selectedFile" accept=".sts,.st,.msa,.zip" style="display: none;" />
<input type="file" id="selectedFileB" accept=".sts,.st,.msa,.zip" style="display: none;" />
<select id="diskImages">
<option value="Another World (1991)(Delphine)(Disk 1 of 2)[cr Elite][t][a].st">Another world - disk 1</option>
<option value="Another World (1991)(Delphine)(Disk 2 of 2)[cr Elite].st">Another world - disk 2</option>
<option value="Atomino (1990)(Psygnosis)(M3)[cr Empire].st">Atomino</option>
<option value="Batman - The Movie (1989)(Ocean)[cr Atarilegend][t].st">Batman the movie</option>
<option value="Bubble Bobble (1987)(Firebird)[cr TEX][t].st">Bubble bobble</option>
<option value="Buggy Boy (1988)(Elite)[cr Bladerunners].st">Buggy boy</option>
<option value="Carrier Command (1988)(Rainbird).st">Carrier command</option>
<option value="Chaos Engine, The (1993)(Renegade)(Disk 1 of 2)[cr Cynix].st">Chaos Engine - disk 1</option>
<option value="Chaos Engine, The (1993)(Renegade)(Disk 2 of 2)[cr Cynix].st">Chaos Engine - disk 2</option>
<option value="Chuck Rock (1991)(Core Design)(Disk 1 of 2)[cr Hotline][t2].st">Chuck rock - disk 1</option>
<option value="Chuck Rock (1991)(Core Design)(Disk 2 of 2)[cr Hotline][t2].st">Chuck rock - disk 2</option>
<option value="Continental Circus (1989)(Sales Curve)[cr Medway Boys][a2][one disk].st">Continental circus</option>
<option value="Deuteros (1991)(Activision)(M3)(Disk 1 of 2)[cr Replicants].st">Deuteros - disk 1</option>
<option value="Deuteros (1991)(Activision)(M3)(Disk 2 of 2)[cr Replicants].st">Deuteros - disk 2</option>
<option value="Dragon Breed (1989)(Activision)[cr Replicants][t][a].st">Dragon breed</option>
<option value="DungeonMasterAtariST.st">Dungeon master</option>
<option value="Exile (1991)(Audiogenic)[cr Factory].st">Exile (doesnt work)</option>
<option value="Fire and Ice (1992)(Graftgold)(Disk 1 of 2)[cr Cynix].st">Fire and ice - disk 1</option>
<option value="Fire and Ice (1992)(Graftgold)(Disk 2 of 2)[cr Cynix].st">Fire and ice - disk 2</option>
<option value="Frontier - Elite II (1993)(Frontier Developments)(SW).st">Frontier</option>
<option value="Gauntlet II (1986)(Atari Corp.)[cr Medway Boys][t][one disk].st">Gauntlet II</option>
<option value="Ghosts 'n' Goblins (1990)(Elite)[cr][t3].st">Ghosts and goblins</option>
<option value="Gods (1991)(Renegade)[cr Vmax][t2][one disk].st">Gods</option>
<option value="Indy Heat (1992)(Sales Curve)[cr Elite].st">Indy Heat</option>
<option value="International Karate plus (1988)(System 3).st">IK+</option>
<option value="James Pond II - Codename Robocod (1992)(Vectordean)[cr Elite][t].st">James Pond II</option>
<option value="Kick Off (1989)(Anco)[cr Delight].st">Kick off</option>
<option value="Kid Gloves (19xx)(Millennium)[cr ACF][t].st">Kid Gloves</option>
<option value="Lemmings (1990)(Psygnosis)[cr Replicants - ST Amigos][t2].st">Lemmings</option>
<option value="Lotus Esprit Turbo Challenge (1990)(Gremlin)[cr Empire][a].st">Lotus esprit</option>
<option value="Nebulus (1988)(Hewson)[cr Atarilegend].st">Nebulus</option>
<option value="Nitro (1990)(Psygnosis)[cr Empire][t][a].st">Nitro</option>
<option value="No Second Price (1993)(Thalion)[cr Superior].st">No second prize</option>
<option value="Oids (1987)(FTL)[cr Was -Not Was-].st">Oids</option>
<option value="Pang (1990)(Ocean)[cr Replicants][t][a].st">Pang (no bottom border)</option>
<option value="Prince of Persia (1990)(Broderbund)[m].st">Prince of persia</option>
<option value="Rick Dangerous (1989)(Core Design - Firebird)[cr Medway Boys][t].st">Rick dangerous</option>
<option value="Saint Dragon (1990)(Sales Curve)[cr Replicants][t].st">Saint dragon</option>
<option value="Sensible Soccer (1992)(Renegade)(M4)(Disk 1 of 2)[cr ICS].st">Sensible soccer - disk 1</option>
<option value="Sensible Soccer (1992)(Renegade)(M4)(Disk 2 of 2)[cr ICS].st">Sensible soccer - disk 2</option>
<option value="Speedball 2 - Brutal Deluxe (1990)(Image Works)[cr Replicants - ST Amigos].st">Speedball 2</option>
<option value="Stunt Car Racer (1989)(Micro Style)[cr].st">Stunt car racer</option>
<option value="Super Cars II (1991)(Gremlin)[cr Elite].st">Supercars II</option>
<option value="Toki (1991)(Ocean)[cr BBC - Medway Boys][t].st">Toki</option>
<option value="Turrican II (1991)(Rainbow Arts)[cr Replicants][t].st">Turrican II</option>
<option value="Vroom (1991)(Lankhor).st">Vroom</option>
</select>
<small><button onclick="openFileInDrive($('#diskImages').val(),'A');" id="Button1">Drive A</button></small>
<small><button onclick="openFileInDrive($('#diskImages').val(),'B');" id="Buttonw">Drive B</button></small>
<small><button onclick="document.getElementById('selectedFile').click();" id="btnBrowse">Browse (A)</button></small>
<small><button onclick="document.getElementById('selectedFileB').click();" id="Button2">Browse (B)</button></small>
<small><button onclick="openFile()" style="display: none;" id="btnOpen">Open</button></small>
<br />
<div style="margin: 0px; padding:0px; clear: both; height: 6px">
</div>
<input type="checkbox" id="joystick" checked="checked" onclick="changeJoystick()">Joystick</input>
<input type="checkbox" id="showpct" onclick="changeShowPct()">Show Speed</input>
<input type="checkbox" id="frameskip" onclick="changeFrameskip()">Frameskip</input>
<input type="checkbox" id="ram" checked="checked" onclick="changeRamSize()">1Meg</input>
</div>
</div>
</body>
</html>