forked from mattgodbolt/Miracle
/
main.js
81 lines (72 loc) · 1.96 KB
/
main.js
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
var tstates = 0;
var running;
var event_next_event;
var breakpointHit = false;
function loadRomData(name) {
"use strict";
var path = "roms/" + name;
console.log("Loading ROM from " + path);
var request = new XMLHttpRequest();
request.open("GET", path, false);
request.overrideMimeType('text/plain; charset=x-user-defined');
request.send(null);
if (request.status != 200) return [];
return request.response;
}
function addRomToList(rom) {
$('#rom_list .template')
.clone()
.removeClass('template')
.text(rom)
.click(function() {
miracle_reset();
loadRom(rom, loadRomData(rom));
hideRomChooser();
start();
})
.appendTo('#rom_list');
}
function go() {
var i;
hideRomChooser();
hideAbout();
for (i = 0; i < RomList.length; ++i) {
addRomToList(RomList[i]);
}
var disass = $('#disassembly');
for (i = 0; i < 32; i++) {
disass.find('.template').clone().removeClass('template').appendTo(disass);
}
var vdp = $('#vdp_registers');
for (i = 0; i < 11; i++) {
vdp.find('.template').clone().removeClass('template').appendTo(vdp).find('.register').text('v' + i);
}
disass.find('.template').remove();
$('#menu button').each(function() {
var f = window[$(this).attr('class').match(/menu_(.*)/)[1]];
$(this).click(f);
});
z80_init();
miracle_init();
miracle_reset();
const defaultRom = getDefaultRom();
loadRom(defaultRom, loadRomData(defaultRom));
start();
}
function getDefaultRom() {
if (typeof(localStorage) !== "undefined" && localStorage["rom"]) return localStorage["rom"];
return 'SonicTheHedgehog.sms';
}
function showRomChooser() {
$('#rom_chooser').show();
}
function hideRomChooser() {
$('#rom_chooser').hide();
}
function showAbout() {
$('#about').show();
}
function hideAbout() {
$('#about').hide();
}
$(function() { go(); });