-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgames.php?name=sprite
142 lines (130 loc) · 3.22 KB
/
games.php?name=sprite
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
<!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(`# This program shows how to draw sprites.
# Sprites are 4x4, encoded in two bytes.
# First byte encodes the top 2 lines (8 values).
# Second byte encodes the bottom 2 lines (8 values).
# High nibble encodes the top 4 pixels.
# Low nibble encodess the bottom 4 pixels.
0 0
LIT 52
DUP LIT @t LIT @draw JSR
DUP LIT 4 ADD LIT @n LIT @draw JSR
DUP LIT 8 ADD LIT @y LIT @draw JSR
POP
BRK
draw: # pos adr
OVR OVR
LDA LIT @sprite JSR
SWP LIT 20 ADD SWP
INC LDA LIT @sprite JSR
JMPr
sprite: # pos n --
LIT 0 LIT 8 PSH PSH do:
OVR
RSI LIT 4 DIV LIT 10 MUL
RSI LIT 4 MOD ADD ADD
OVR LIT 80 RSI SFT AND
SET
PUL INC PSH
RSI RSJ LTH LIT @do JCN
PUL PUL POP POP POP POP
JMPr
t: 46 42
n: 6a aa
y: aa 48`);
console.log(rom);
} catch(e) {
errors.innerHTML = e.toString()
}
</script>
<h1>sprite</h1>
<p id="share"></p>
<table>
<tr>
<td>Name</td>
<td>sprite</td>
</tr>
<tr>
<td>Author</td>
<td>m15o</td>
</tr>
<tr>
<td>Instructions</td>
<td>Display Amatl on the screen</td>
</tr>
<tr>
<td>Size</td>
<td id="size"></td>
</tr>
<tr>
<td>Source</td>
<td><pre><code># This program shows how to draw sprites.
# Sprites are 4x4, encoded in two bytes.
# First byte encodes the top 2 lines (8 values).
# Second byte encodes the bottom 2 lines (8 values).
# High nibble encodes the top 4 pixels.
# Low nibble encodess the bottom 4 pixels.
0 0
LIT 52
DUP LIT @t LIT @draw JSR
DUP LIT 4 ADD LIT @n LIT @draw JSR
DUP LIT 8 ADD LIT @y LIT @draw JSR
POP
BRK
draw: # pos adr
OVR OVR
LDA LIT @sprite JSR
SWP LIT 20 ADD SWP
INC LDA LIT @sprite JSR
JMPr
sprite: # pos n --
LIT 0 LIT 8 PSH PSH do:
OVR
RSI LIT 4 DIV LIT 10 MUL
RSI LIT 4 MOD ADD ADD
OVR LIT 80 RSI SFT AND
SET
PUL INC PSH
RSI RSJ LTH LIT @do JCN
PUL PUL POP POP POP POP
JMPr
t: 46 42
n: 6a aa
y: aa 48</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="sprite.rom">download<a>`;
document.getElementById("size").innerHTML = rom.length + " B";
</script>
</main>
</body>
</html>