#include <acl.c>
void aMain()
{
AWindow *w;
int x, y, c;
w = aOpenWin(256, 256, "grd", 1);
c = 0;
for (y = 0; y < 256; y++) {
for (x = 0; x < 256; x++) {
aSetPix0(w, x, y, c);
c = c + 0x100;
}
}
aWait(-1);
}
#include <acl.c>
#include "tl9builtin.c"
void aMain()
{
AWindow *w;
int x, y, sx, sy, cx, cy, zx, zy, xx, yy, t, n, sn, c;
w = aOpenWin(512, 384, "mandel", 1);
for (y = 0; y < 384; y++) {
for (x = 0; x < 512; x++) {
sn = 0;
for (sx = 0; sx < 4; sx++) {
cx = (x * 4 + sx) * 56 + 4673536;
for (sy = 0; sy < 4; sy++) {
cy = (y * 4 + sy) * -56 - 124928;
zx = cx; zy = cy;
for (n = 1; n < 447; n++) {
xx = mul64shr(zx, zx, 24);
yy = mul64shr(zy, zy, 24);
t = xx + yy;
if (t > 0x4000000) break;
zy = mul64shr(zy, zx, 23);
zx = xx + cx - yy;
zy = zy + cy;
}
sn = sn + n;
}
}
n = sn >> 4;
c = aRgb8(n, 0, 0);
if (n > 255) {
c = aRgb8(0, 0, 0);
if (n != 447) {
c = aRgb8(255, n - 255, 0);
}
}
aSetPix0(w, x, y, c);
}
}
printTime();
aWait(-1);
}
#include <acl.c>
void aMain()
{
AWindow *w;
int i, x, y, xx, yy, d0, d1, d2, d3, d, dd;
w = aOpenWin(752, 496, "maze", 1);
aFillRect0(w, 752, 496, 0, 0, 0x00ff00);
aFillRect0(w, 16, 16, 16, 16, 0x000000);
for (i = 0; i < 1000000; i++) {
x = ((aXorShift32() & 0x7fffffff) % 23) * 2 + 1;
y = ((aXorShift32() & 0x7fffffff) % 15) * 2 + 1;
if (aGetPix(w, x * 16, y * 16) == 0x000000) {
for (;;) {
d0 = d1 = d2 = d3 = 0;
xx = x * 16;
yy = y * 16;
aFillRect0(w, 16, 16, xx, yy, 0x000000);
if (x != 45) { d0 = (aGetPix(w, xx + 16, yy) != 0) * (aGetPix(w, xx + 32, yy) != 0); }
if (x != 1) { d1 = (aGetPix(w, xx - 16, yy) != 0) * (aGetPix(w, xx - 32, yy) != 0); }
if (y != 29) { d2 = (aGetPix(w, xx, yy + 16) != 0) * (aGetPix(w, xx, yy + 32) != 0); }
if (y != 1) { d3 = (aGetPix(w, xx, yy - 16) != 0) * (aGetPix(w, xx, yy - 32) != 0); }
d = d0 + d1 + d2 + d3;
if (d == 0) break;
dd = (aXorShift32() & 0x7fffffff) % d;
if (d0) { if (dd == 0) { aFillRect0(w, 16, 16, xx + 16, yy, 0x000000); x = x + 2; } dd = dd - 1; }
if (d1) { if (dd == 0) { aFillRect0(w, 16, 16, xx - 16, yy, 0x000000); x = x - 2; } dd = dd - 1; }
if (d2) { if (dd == 0) { aFillRect0(w, 16, 16, xx, yy + 16, 0x000000); y = y + 2; } dd = dd - 1; }
if (d3) { if (dd == 0) { aFillRect0(w, 16, 16, xx, yy - 16, 0x000000); y = y - 2; } dd = dd - 1; }
}
}
}
aWait(-1);
}
#include <acl.c>
#include "tl9buitin.c"
int vertx[8] ={ 2, 2, 2, 2, 0, 0, 0, 0 };
int verty[8] ={ 2, 2, 0, 0, 2, 2, 0, 0 };
int vertz[8] ={ 2, 0, 2, 0, 2, 0, 2, 0 };
int squar[24] = { 0,4,6,2, 1,3,7,5, 0,2,3,1, 0,1,5,4, 4,5,7,6, 6,7,3,2 };
int col[6] = { 0xff0000, 0x00ff00, 0xffff00, 0x0000ff, 0xff00ff, 0x00ffff };
void aMain()
{
int vx[8]; int vy[8]; int vz[8];
int centerz4[6];
int scx[8]; int scy[8];
int buf0[160]; int buf1[160];
int i, j, k, l, thx, thy, thz, xp, xa, yp, ya, zp, za, xt, yt, zt, t, m;
int k0, k1, k2, e0x, e0y, e1x, e1y, l1, p0x, p0y, p1x, p1y, ymin, ymax, x, y, c;
int dx, *buf, y0, y1;
AWindow *w;
w = aOpenWin(256, 160, "kcube", 1);
for (i = 0; i < 8; i++) {
vertx[i] = (vertx[i] - 1) * 50;
verty[i] = (verty[i] - 1) * 50;
vertz[i] = (vertz[i] - 1) * 50;
}
thx = thy = thz = 0;
for (;;) {
thx = (thx + 182) & 0xffff;
thy = (thy + 273) & 0xffff;
thz = (thz + 364) & 0xffff;
xp = ff16cos(thx); xa = ff16sin(thx);
yp = ff16cos(thy); ya = ff16sin(thy);
zp = ff16cos(thz); za = ff16sin(thz);
for (i = 0; i < 8; i++) {
zt = vertz[i] * xp + verty[i] * xa;
yt = verty[i] * xp - vertz[i] * xa;
xt = vertx[i] * yp + mul64shr(zt, ya, 16);
vz[i] = mul64shr(zt, yp, 16) - vertx[i] * ya;
vx[i] = mul64shr(xt, zp, 16) - mul64shr(yt, za, 16);
vy[i] = mul64shr(yt, zp, 16) + mul64shr(xt, za, 16);
}
for (l = i = 0; i < 6; i++) {
centerz4[i] = vz[squar[l]] + vz[squar[l + 1]] + vz[squar[l + 2]] + vz[squar[l + 3]] + 0x70000000;
l = l + 4;
}
aFillRect0(w, 160, 160, 48, 0, 0x000000);
for (i = 0; i < 8; i++) {
t = (vz[i] + 13107200) >> 16;
t = 4915200 / t;
scx[i] = mul64shr(vx[i], t, 31) + 128;
scy[i] = mul64shr(vy[i], t, 31) + 80;
}
for (;;) {
m = j = 0;
for (i = 0; i < 6; i++) {
t = centerz4[i];
if (m < t) {
m = t;
j = i;
}
}
if (m == 0) break;
l = j * 4; centerz4[j] = 0;
k0 = squar[l];
k1 = squar[l + 1];
k2 = squar[l + 2];
e0x = vx[k1] - vx[k0];
e0y = vy[k1] - vy[k0];
e1x = vx[k2] - vx[k1];
e1y = vy[k2] - vy[k1];
if (mul64shr(e0x, e1y, 16) <= mul64shr(e0y, e1x, 16)) {
l1 = l + 4;
k = squar[l + 3];
p0x = scx[k]; p0y = scy[k];
ymin = 99999; ymax = 0;
for (; l < l1; l++) {
k = squar[l];
p1x = scx[k]; p1y = scy[k];
if (ymin > p1y) { ymin = p1y; }
if (ymax < p1y) { ymax = p1y; }
if (p0y != p1y) {
if (p0y < p1y) {
buf = buf0; y0 = p0y; y1 = p1y; dx = p1x - p0x; x = p0x;
} else {
buf = buf1; y0 = p1y; y1 = p0y; dx = p0x - p1x; x = p1x;
}
x = x * 65536;
dx = dx * 65536;
dx = dx / (y1 - y0);
if (dx >= 0) {
x = x + 0x8000;
} else {
x = x - 0x8000;
}
++y1;
for (y = y0; y < y1; y++) {
buf[y] = x >> 16;
x = x + dx;
}
}
p0x = p1x; p0y = p1y;
}
c = col[j];
++ymax;
for (y = ymin; y < ymax; y++) {
p0x = buf0[y];
p1x = buf1[y];
if (p0x <= p1x) {
aFillRect0(w, p1x - p0x + 1, 1, p0x, y, c);
} else {
aFillRect0(w, p0x - p1x + 1, 1, p1x, y, c);
}
}
}
}
aWait(50);
if (aInkey(w, 1) != 0) break;
}
}
#include <acl.c>
#include "tl9builtin.c"
int fght[384] = {
0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,
0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,
0,1,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,1,0,
0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,
0,1,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,0,
0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
int invd[512] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,
0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,
0,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,0,
0,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,0,
0,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,0,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,
0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,
0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,
0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,
0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,
0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
void aMain()
{
int inv[192];
int i, j, k, score, pnt, mwt0, fx, idir, wunit, ix, iy, invlin, lx = 0, ly, lwt, mwt, high = 0;
AWindow *w;
w = aOpenWin(324, 228, "graphics", 1);
for (i = 0; i < 384; i++) {
fght[i] = fght[i] * 0x00ffff;
}
for (i = 0; i < 512; i++) {
invd[i] = invd[i] * 0x00ff00;
}
restart:
score = 0; pnt = 1; mwt0 = 20; fx = 18;
nxtinv:
ix = 7; iy = 1; invlin = 5;
ly = 0; lwt = 0; mwt = mwt0;
idir = 1; wunit = 1024;
for (i = 0; i < 6; i++) {
for (j = 0; j < 26; j++) {
inv[i * 32 + j] = j % 5;
}
}
for(;;) {
// 表示.
aFillRect0(w, 324, 228, 0, 0, 0x000000);
aDrawStr0(w, 34, 2, 0xffffff, 0x000000, "SCORE: HIGH:");
gprintDec(w, 82, 2, 6, 0xffffff, 0x000000, score);
gprintDec(w, 226, 2, 6, 0xffffff, 0x000000, high);
bitblt(w, 24, 16, fx * 8 + 2, 13 * 16 + 2, fght);
for (i = 0; i < 6; i++) {
for (j = 0; j < 26; j++) {
if (inv[i * 32 + j] == 1) {
bitblt(w, 32, 16, (ix + j) * 8 + 2, (iy + i) * 16 + 2, invd);
}
}
}
if (ly != 0) {
aFillRect0(w, 2, 14, lx * 8 + 5, ly * 16 + 3, 0xffff00);
}
// インベーダ全滅判定.
for (;;) {
for (i = 0; i < 26; i++) {
if (inv[invlin * 32 + i] != 0) goto skip0;
}
invlin = invlin - 1;
if (invlin < 0) {
mwt0 = mwt0 - mwt0 / 3;
aWait(1024);
goto nxtinv;
}
}
skip0:// wait処理. aWait(wunit); wunit = 40; lwt = lwt - 1;
// キー入力.
j = 0;
for (;;) {
i = aInkey(w, 1);
if (i == 0) break;
if (i == 27) goto end;
if (i == 0x1024) { j = -1; }
if (i == 0x1025) { j = 1; }
if (i == 0x1026) { i = 32; }
if (i == 32) {
if (lwt <= 0) {
lwt = 15;
lx = fx + 1;
ly = 13;
}
}
}
// 自機の移動.
i = fx + j;
if (i >= 0) {
if (i <= 37) {
fx = i;
}
}
// レーザ移動.
if (ly > 0) {
ly = ly - 1;
if (ly == 0) {
pnt = pnt - 10;
if (pnt < 1) {
pnt = 1;
}
}
}
// あたり判定.
j = lx - ix;
k = ly - iy;
if (k >= 0) {
if (k <= 5) {
if (j >= 0) {
if (j < 24) {
i = inv[k * 32 + j];
if (i > 0) {
ly = 0;
j = j - i;
for (i = 0; i < 6; i++) {
inv[k * 32 + j + i] = 0;
}
score = score + pnt;
pnt++;
if (high < score) {
high = score;
}
}
}
}
}
}
// インベーダ移動.
if (mwt > 0) {
mwt = mwt - 1;
} else {
mwt = mwt0;
ix = ix + idir;
if (ix >= 0) {
if (ix <= 14) continue;
}
if (iy + invlin == 12) {
aDrawStr0(w, 122, 98, 0xff0000, 0x000000, "GAME OVER");
for (;;) {
aWait(128);
i = aInkey(w, 1);
if (i == 10) break;
if (i == 27) goto end;
}
goto restart;
}
idir = idir * -1;
iy++;
ix = ix +idir;
}
}
end:
aWait(-1);
}