-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgames.php?name=draw
130 lines (120 loc) · 3.31 KB
/
games.php?name=draw
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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Amatl</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<a href="index.php"><h2>Tny</h2></a>
<nav>
<ul class="menu">
<li><a href="about.php">About</a></li>
<li><a href="tutorial.php">Tutorial</a></li>
<li><a href="reference.php">Reference</a></li>
<li><a href="https://sr.ht/~m15o/Amatl/">Download</a></li>
<li><a href="ide.html">Web IDE</a></li>
<li><a href="launcher.php">Launcher</a></li>
<li><a href="games.php">Games</a></li>
</ul>
</nav>
</header>
<main>
<script src="amatl.js"></script>
<script>
try {
rom = msm.assemble(`@screen @ctrl
screen:
CLS
LIT 0 LIT 10 PSH PSH do: RSI LIT 40 SFT
LIT 0 LIT f PSH PSH while:
DUP RSI ADD OVR RSI ADD LDB SET
PUL INC PSH
RSI RSJ NEQ LIT @while JCN
PUL PUL POP POP POP
PUL INC PSH
RSI RSJ NEQ LIT @do JCN
PUL PUL POP POP
LIT pos: 0 FRM LIT a MOD LIT 9 LTH SET
BRK
ctrl:
KEY LIT 1 AND LIT @up JCR
KEY LIT 2 AND LIT @down JCR
KEY LIT 4 AND LIT @left JCR
KEY LIT 8 AND LIT @right JCR
KEY LIT 10 AND LIT @keya JCR
KEY LIT 20 AND LIT @keyb JCR
BRK
up: LIT @pos LDA LIT 10 SUB LIT @pos STA JMPr
down: LIT @pos LDA LIT 10 ADD LIT @pos STA JMPr
left: LIT @pos LDA DEC LIT @pos STA JMPr
right: LIT @pos LDA INC LIT @pos STA JMPr
keya: LIT 1 LIT @pos LDA STB JMPr
keyb: LIT 0 LIT @pos LDA STB JMPr`);
console.log(rom);
} catch(e) {
errors.innerHTML = e.toString()
}
</script>
<h1>draw</h1>
<p id="share"></p>
<table>
<tr>
<td>Name</td>
<td>draw</td>
</tr>
<tr>
<td>Author</td>
<td>m15o</td>
</tr>
<tr>
<td>Instructions</td>
<td>Use arrow keys to hit the pixel!</td>
</tr>
<tr>
<td>Size</td>
<td id="size"></td>
</tr>
<tr>
<td>Source</td>
<td><pre><code>@screen @ctrl
screen:
CLS
LIT 0 LIT 10 PSH PSH do: RSI LIT 40 SFT
LIT 0 LIT f PSH PSH while:
DUP RSI ADD OVR RSI ADD LDB SET
PUL INC PSH
RSI RSJ NEQ LIT @while JCN
PUL PUL POP POP POP
PUL INC PSH
RSI RSJ NEQ LIT @do JCN
PUL PUL POP POP
LIT pos: 0 FRM LIT a MOD LIT 9 LTH SET
BRK
ctrl:
KEY LIT 1 AND LIT @up JCR
KEY LIT 2 AND LIT @down JCR
KEY LIT 4 AND LIT @left JCR
KEY LIT 8 AND LIT @right JCR
KEY LIT 10 AND LIT @keya JCR
KEY LIT 20 AND LIT @keyb JCR
BRK
up: LIT @pos LDA LIT 10 SUB LIT @pos STA JMPr
down: LIT @pos LDA LIT 10 ADD LIT @pos STA JMPr
left: LIT @pos LDA DEC LIT @pos STA JMPr
right: LIT @pos LDA INC LIT @pos STA JMPr
keya: LIT 1 LIT @pos LDA STB JMPr
keyb: LIT 0 LIT @pos LDA STB JMPr</code></pre></td>
</tr>
</table>
<script>
document.getElementById("share").innerHTML = `<a href="emulator.php?r=${btoa(rom.map(e => String.fromCharCode(e)).join(''))}">play<a>`;
const bytes = new Uint8Array(rom);
const blob = new Blob([bytes], { type: 'application/octet-stream' });
document.getElementById("share").innerHTML += ` <a href="https://Amatl.m15o.net/${URL.createObjectURL(blob)}" download="draw.rom">download<a>`;
document.getElementById("size").innerHTML = rom.length + " B";
</script>
</main>
</body>
</html>