/* tree2.c (tree.c) - Tree - Don Yang (uguu.org) Preprocess step 2: Substitute names / Group variable types Variables: ix -> i sx -> x bx -> a fx -> u tx -> p moon -> _0 iy -> j sy -> y by -> b fy -> v ty -> q ages -> _1 iz -> k sz -> z rx -> c offsets -> _2 pcount -> e page -> m mpal -> r clock -> _3 dcount -> f row -> n spal -> s tick -> _4 particle -> d screen -> o tpal -> t rseed -> _5 moonage -> g altcolor -> w moonpos -> h Extra -> l Particle members: ptype -> p cx -> x dx -> i rx -> u color -> q cy -> y dy -> j ry -> v Functions: AddCut A MoonAge O Blit B RegenerateDust P ClearKey C Render Q ClearScreen D RenderDust R DestroyTree E RenderFruit S DrawLine F RenderLeaf T DrawPoint G RenderMoon U GenerateElm1 H RenderTree V GenerateElm2 I RestoreScreen W GeneratePine1 J rnd X GeneratePine2 K swap Z InitMoon L InitTree M InitParticles N 07/23/99 */ #include #include #define PI 3.14159265358979323846264338327950288419716939937510 #define PARTICLE_COUNT 2001 #define PARTICLE_DUST 0 #define PARTICLE_LEAF 1 #define PARTICLE_FRUIT 2 #define PARTICLE_TREE 3 #define COLOR_BRANCH0 0 #define COLOR_BRANCH1 1 #define COLOR_ROOT0 2 #define COLOR_ROOT1 3 #define COLOR_LEAF0 4 #define COLOR_LEAF1 5 #define COLOR_LEAF2 6 #define COLOR_DUST0 7 #define COLOR_DUST1 8 #define SCREEN_RENDER 0 #define SCREEN_ALPHA 1 #define SCREEN_SAVE 2 #define MAX_VELOCITY_X 32 #define MAX_VELOCITY_Y 32 #define X_PRECISION 4 #define Y_PRECISION 8 #define MAX_FADE_IN_TIME 128 #define MOON_PRECISION 3 #define color(a1, a2) t[w][COLOR_##a1##a2] #define Z(a1, a2, a3) \ j = d[a2].a1; \ d[a2].a1 = d[a3].a1; \ d[a3].a1 = j; volatile long far *_3 = (long far *)1132L; long _4, _5; int w, m[3][2048], n[25], t[2][9] = { {0x7600, 0xf600, 0x7800, 0xf700, 0x2700, 0xaf00, 0xac00, 0x0300, 0x0100}, {0x7800, 0xf700, 0x7300, 0xfb00, 0x1700, 0x9f00, 0x9d00, 0x0300, 0x0200} }, _1[] = {18, 0, 11, 22, 3, 14, 25, 6, 17, 28, 9, 20, 1, 12, 23, 4, 15, 26, 7}, _2[] = {-1, 1, 0, 1, 2, 3, 4, 5, 7, 7, 9, 9}, _0[5][10], e, f, r[5] = {0, 8, 7, 11, 15}, g, h, l[3] = {'D', 'O', 'N'}, s[6][2] = { {0x0fdf, 0x0000}, {0x78dc, 0x0000}, {0x78df, 0x0000}, {0x0fdc, 0x0000}, {0x07dc, 0x08df}, {0x08dc, 0x07df} }, i, j, k, x, y, z, c, a[4], b[4], far *o = (int far *)(23L << 27); double u, v, p, q; struct _d { int p; int x, y, i, j, u, v; int q; } d[PARTICLE_COUNT]; int X(void) { _5 = _5 * 0x343fdL + 0x269ec3L; return (int)(_5 >> 16) & 0x7fff; } void B(void) { while( _4 == *_3 ); _4 = *_3; for(i = 0; i < 2000;) o[i++] = m[SCREEN_RENDER][i]; } void A(void) { if( c++ & 1 ) { x = 16 * 6 + X() % (7 * 6); y = 14 * 6 - X() % (7 * 6); } else { x = 14 * 6 - X() % (7 * 6); y = 16 * 6 + X() % (7 * 6); } for(i = 0; i < 2000;) m[SCREEN_RENDER][i++] = -1; B(); k = X() & 1; for(z = k ? 0 : 7; z < 8 && z >= 0; z += k ? 1 : -1) { for(i = 0; i < 2000;) m[SCREEN_RENDER][i++] = 0; for(i = (z < 4 ? 0 : z * 20 - 80); i < (z < 4 ? z * 20 + 20 : 80); i++) { j = (i * (y - x)) / 80 + x; m[SCREEN_RENDER][n[j / 6] + i] = s[j % 6][0]; m[SCREEN_RENDER][n[j / 6 + 1] + i] = s[j % 6][1]; } B(); } a[i = c - 1] = X() % 16 + 8; b[i] = X() % 16 + 8; if( !(c & 1) ) a[i] = -a[i]; x /= 6; y /= 6; for(i = 0; i < 80; i++) { for(j = (i * (y - x)) / 80 + x; j >= 0;) m[SCREEN_ALPHA][n[j--] + i] = c; } } void C(void) { if( !getch() ) getch(); } void D(void) { for(i = 0; i < 2000;) m[SCREEN_SAVE][i++] = o[i]; for(i = e = 0; i < 2000; i++) { if( (o[i] & 255) != 32 || (o[i] & 0xf000) ) { d[e].x = i % 80; d[e].y = i / 80; d[e].q = o[i]; d[e++].u = X() % 64 + 1; } } for(f = e; f && !kbhit();) { for(i = 0; i < 2000;) m[SCREEN_RENDER][i++] = 0; for(i = e - 1; i >= 0; i--) { if( d[i].u ) { m[SCREEN_RENDER][n[d[i].y] + d[i].x] = d[i].q; if( !(--d[i].u) ) { d[i].i = X() % 4 + 6; d[i].j = X() % 4; } } else { if( d[i].y >= 0 && d[i].y < 25 && d[i].x >= 0 && d[i].x < 80 ) { m[SCREEN_RENDER][n[d[i].y] + d[i].x] = d[i].q; } else { if( d[i].i ) { f--; d[i].i = d[i].j = 0; } } d[i].x -= d[i].i; d[i].y += d[i].j; } } B(); } if( kbhit() ) C(); } void G(int x, int y, int t, int c) { if( y >= 0 && y < 25 && x >= 0 && x < 80 ) { if( m[SCREEN_ALPHA][n[y] + x] ) return; m[SCREEN_ALPHA][n[y] + x] = 1; d[e].x = x; d[e].y = y; d[e].p = t; d[e++].q = c; } } void F(int x, int y, int i, int j, int t, int c) { u = (i - x) / 64.0; v = (j - y) / 64.0; for(k = 0; k <= 64; k++) G((int)(k * u) + x, (int)(k * v) + y, t, c); } void H(void) { i = x = X() % 18 + 30; y = X() % 4 + 11; c = x + 8; for(j = y; j < 25; j++) { F(c - (c - i) / 3, j, c, j, PARTICLE_TREE, color(BRANCH, 0)); F(i, j, c, j, PARTICLE_TREE, color(BRANCH, 1)); if( (z = X()) & 3 ) { if( z & 4 ) { i--; if( z & 8 ) c--; } else { c++; if( z & 8 ) i++; } if( c - i < 4 ) z = (z & 1) ? i-- : c++; if( c - i > 15 ) z = (z & 1) ? i++ : c--; } if( j > 20 && j < 24 ) { if( X() & 1 ) break; } } for(; j < 25; j++) { for(z = i; z <= c;) { G(z++, j, PARTICLE_TREE, X() & 3 ? color(ROOT, 1) : color(ROOT, 0)); } i -= X() % 7 + 6; c += X() % 7 + 6; } for(z = 0; z < 4; z++) { c = z * 8 + X() % 5 + 2; a[z] = (int)(x + 25 * cos((PI * c) / 32) + z * 2); b[z] = (int)(y - 10 * sin((PI * c) / 32) + 2); for(c = 0; c < 4; c++) { i = X() % 3 - 1 + (x + a[z]) / 2 + z; j = X() % 3 - 1 + (y + b[z]) / 2; F(X() % 3 - 1 + a[z], X() % 3 - 1 + b[z], i, j, PARTICLE_TREE, c - 1 ? color(BRANCH, 1) : color(BRANCH, 0)); F(x + z * 2, y, i, j, PARTICLE_TREE, c - 1 ? color(BRANCH, 1) : color(BRANCH, 0)); } } for(x = 0; x < 4; x++) { for(y = 0; y++ < 40;) { if( X() & 1 ) { u = (5 - y) * PI / 64; G(a[x] + (int)(14 * cos(u)), b[x] - (int)(7 * sin(u)), PARTICLE_LEAF, color(LEAF, 0)); } } } for(x = 0; x < 4; x++) { for(y = 0; y++ < 512;) { u = y * PI / 256; v = (X() & 0xfff) / 300; c = X() & 7; G(a[x] + (int)(v * cos(u)), b[x] + (int)(v * sin(u) * .4), c ? PARTICLE_LEAF : PARTICLE_FRUIT, c ? color(LEAF, 1) : color(LEAF, 2)); } } } void I(void) { i = x = X() % 14 + 31; y = X() % 6 + 12; c = x + 7; for(j = y; j < 25; j++) { F(c - (c - i) / 3, j, c, j, PARTICLE_TREE, color(BRANCH, 0)); F(i, j, c, j, PARTICLE_TREE, color(BRANCH, 1)); if( (z = X()) & 3 ) { if( z & 4 ) { i--; if( z & 8 ) c--; } else { c++; if( z & 8 ) i++; } if( c - i < 4 ) z = (z & 1) ? i-- : c++; if( c - i > 15 ) z = (z & 1) ? i++ : c--; } if( j > 20 && j < 24 ) { if( X() & 1 ) break; } } for(; j < 25; j++) { for(z = i; z <= c;) { G(z++, j, PARTICLE_TREE, X() & 3 ? color(ROOT, 1) : color(ROOT, 0)); } i -= X() % 7 + 6; c += X() % 7 + 6; } for(i = 0; i < 4;) { c = i * 8 + X() % 5 + 2; a[i] = (int)(x + 25 * cos((PI * c) / 32) + i * 2); b[i++] = (int)(y - 10 * sin((PI * c) / 32) + 2); } for(i = 0; i < 4; i++) { for(j = 0; j++ < 32;) { u = PI * (X() % 256) / 128; k = X() % 8; G((int)(k * cos(u)) + a[i] + i * 2 + X() % 2, (int)(k * sin(u) / 2) + b[i], PARTICLE_LEAF, color(LEAF, 1)); } } for(i = 0; i < 4; i++) { F(a[i], b[i], x + i * 2, y, PARTICLE_TREE, j ? color(BRANCH, 1) : color(BRANCH, 0)); for(j = 0; j++ < 3;) { u = PI * (X() % 256) / 128; k = X() % 4 + 6; F((int)(k * cos(u)) + a[i], (int)(k * sin(u) / 2) + b[i], x + i * 2, y, PARTICLE_TREE, color(BRANCH, 1)); } } for(i = 0; i < 4; i++) { for(j = 0; j++ < 40;) { if( X() & 1 ) { u = (5 - j) * PI / 64; G(a[i] + (int)(14 * cos(u)), b[i] - (int)(7 * sin(u)), PARTICLE_LEAF, color(LEAF, 0)); } } } for(i = 0; i < 4; i++) { for(j = 0; j++ < 512;) { u = j * PI / 256; v = (X() & 0xfff) / 300; G(a[i] + (int)(v * cos(u)), b[i] + (int)(v * sin(u) / 2), PARTICLE_LEAF, color(LEAF, 1)); } } } void J(void) { x = (X() % 16) + 32; y = (X() % 2) + 4; z = (X() % 16) + 32; for(i = 5; i > 2; i--) F(x + (i / 3), y, z + i, 24, PARTICLE_TREE, color(BRANCH, 0)); for(; i > -5; i--) F(x + (i / 3), y, z + i, 24, PARTICLE_TREE, color(BRANCH, 1)); for(j = 0; j < 21; j++) { i = 3 * (j < 10 ? j : j - 6) + 1; if( X() & 1 ) { G(x + (j * (z - x)) / (24 - y) + i / 2 - X() % i, j, PARTICLE_FRUIT, color(LEAF, 2)); } for(k = 0; k++ < i;) G((c = x + (j * (z - x)) / (24 - y) + i / 2) - X() % i - 1, j, PARTICLE_LEAF, color(LEAF, 1)); for(; i > -1; i--) { if( X() & 3 ) G(c - i, j, PARTICLE_LEAF, color(LEAF, 0)); } } } void K(void) { if( !(z = X() & 1) ) { a[0] = X() % 10 + 35; b[0] = X() % 4 + 9; a[2] = X() % 10 + 35; x = 16; y = 11; } else { a[0] = X() % 8 + 16; b[0] = X() % 4 + 10; a[1] = X() % 8 + 46; b[1] = X() % 4 + 10; a[2] = X() % 8 + 16; a[3] = X() % 8 + 46; x = 10; y = 10; } for(; z >= 0; z--) { for(i = 4; i > 2; i--) F(a[z] + (i / 3), b[z], a[z + 2] + i, 24, PARTICLE_TREE, color(BRANCH, 0)); for(; i > -4; i--) F(a[z] + (i / 3), b[z], a[z + 2] + i, 24, PARTICLE_TREE, color(BRANCH, 1)); u = atan2(24 - b[z], a[z] - a[z + 2]); v = sin(u); u = cos(u); for(k = 0; k < 256; k++) { if( X() & 1 ) continue; p = x * sin(k * PI / 128); q = ((k < 192 && k > 64) ? 3 * y : y) * cos(k * PI / 128); i = (int)(p * v - q * u) + (a[z] + a[z + 2]) / 2; j = ((int)(p * u + q * v) + b[z] + 24) / 2; G(i, j, PARTICLE_LEAF, (k > 96 && k < 224) ? color(LEAF, 1) : color(LEAF, 0)); } for(k = 0; k < 256; k++) { p = x * sin(k * PI / 128); q = ((k < 192 && k > 64) ? 3 * y : y) * cos(k * PI / 128); i = (int)(p * v - q * u) + (a[z] + a[z + 2]) / 2; j = ((int)(p * u + q * v) + b[z] + 24) / 2; for(c = 0; c++ < 8;) { p = (X() % 32) / 32.0; if( X() & 7 ) { G(i - (int)(p * (i - (a[z] + a[z + 2]) / 2)), j - (int)(p * (j - (b[z] + 24) / 2)), PARTICLE_LEAF, X() % 4 ? color(LEAF, 1) : color(LEAF, 0)); } else { G(i - (int)(p * (i - (a[z] + a[z + 2]) / 2)), j - (int)(p * (j - (b[z] + 24) / 2)), PARTICLE_FRUIT, color(LEAF, 2)); } } } } } void L(void) { if( !g ) { for(k = 0; k < 400;) m[SCREEN_ALPHA][k++] = 0; } else if( g == 15 ) { for(j = k = 0; j < 20; j++) { for(i = -10; i < 10; i++) { m[SCREEN_ALPHA][k++] = ((i + 0.5) * (i + 0.5) + (j - 9.5) * (j - 9.5)) <= 90.25 ? 1 : 0; } } } else { for(i = 0; i < 400;) m[SCREEN_ALPHA][i++] = 0; if( g < 15 ) { u = (15 - g) / 7.5 - 1; v = 1; } else { u = -1; v = (30 - g) / 7.5 - 1; } for(j = 0; j < 20; j++) { x = (int)(u * sqrt(90.25 - (j - 9.5) * (j - 9.5))) + 10; c = (int)(v * sqrt(90.25 - (j - 9.5) * (j - 9.5))) + 10; for(i = x; i <= c; i++) m[SCREEN_ALPHA][j * 20 + i] = 1; } } for(j = 0; j < 5; j++) { for(i = 0; i < 10; i++) { k = j * 80 + i * 2; x = m[SCREEN_ALPHA][k] + m[SCREEN_ALPHA][k + 1] + m[SCREEN_ALPHA][k + 20] + m[SCREEN_ALPHA][k + 21]; c = m[SCREEN_ALPHA][k + 40] + m[SCREEN_ALPHA][k + 41] + m[SCREEN_ALPHA][k + 60] + m[SCREEN_ALPHA][k + 61]; _0[j][i] = !(x + c) ? 0 : ((x > c) ? ((r[x] << 12) | (r[c] << 8) | 220) : ((r[c] << 12) | (r[x] << 8) | 223)); } } h = -12 << MOON_PRECISION; } void M(void) { for(i = e = 0; i < 2000;) m[SCREEN_RENDER][i++] = (m[SCREEN_ALPHA][i] = 0) - 1; B(); if( (i = X()) & 3 ) { if( i & 4 ) H(); else I(); } else { if( i & 4 ) J(); else K(); } } void N(void) { for(k = 1024; k > 0; k /= 2) { do { for(i = j = 0; i < e - k; i++) { if( (n[d[i].y] + d[i].x) > (n[d[i + k].y] + d[i + k].x) ) { Z(p, i, i + k); Z(x, i, i + k); Z(y, i, i + k); Z(q, i, i + k); } } } while( j ); } for(i = j = k = 0; i < e; i++) { for(; j < 2000 && (m[SCREEN_SAVE][j] & 255) == 32; j++); d[i].q |= (j == 2000) ? l[X() % 3] : (m[SCREEN_SAVE][j++] & 255); d[i].u = X() % MAX_FADE_IN_TIME + 1; d[i].v = X() % MAX_FADE_IN_TIME + MAX_FADE_IN_TIME; } for(; !k || (i - e < 16); i++) { for(; j < 2000 && (m[SCREEN_SAVE][j] & 255) == 32; j++); d[i].y = d[i].p = 0; d[i].q = (X() & 1 ? color(DUST, 0) : color(DUST, 1)) | ((j == 2000) ? k = l[X() % 3] : (m[SCREEN_SAVE][j++] & 255)); d[i].u = -1999; } f = i - e; e = i; for(k = f / 2; k; k--) { for(i = e - 1; i > 0; i--) { Z(p, i, i - 1); Z(x, i, i - 1); Z(y, i, i - 1); Z(u, i, i - 1); Z(v, i, i - 1); Z(q, i, i - 1); } } for(i = 0; i < e;) d[i++].i = n[d[i].y] + d[i].x; } void O(void) { if( j == 31 ) j = 1; g = (_1[(k + 1) % 19] + j + _2[i - 1]) % 30; } void P(void) { for(i = 0; i < e; i++) { if( d[i].u < 0 || d[i].v > (25 << Y_PRECISION) ) { d[i].i = (X() % MAX_VELOCITY_X) + 4; d[i].j = (X() % MAX_VELOCITY_Y) + 8; if( X() & 1 ) { d[i].u = X() % (80 << X_PRECISION); d[i].v = -2 << Y_PRECISION; } else { d[i].u = 81 << X_PRECISION; d[i].v = X() % (25 << Y_PRECISION); } } } } void R(void) { d[i].x = d[i].u >> X_PRECISION; d[i].y = d[i].v >> Y_PRECISION; if( d[i].y >= 0 && d[i].y < 25 && d[i].x >= 0 && d[i].x < 80 ) { x = n[d[i].y] + d[i].x; m[SCREEN_RENDER][x] = ( (m[SCREEN_RENDER][x] & 0x0fff) && (m[SCREEN_RENDER][x] & 0xf000) ) ? (m[SCREEN_RENDER][x] & 0xf000) | 0x800 | d[i].q : d[i].q; } d[i].u -= d[i].i; d[i].v += d[i].j; } void S(void) { if( d[i].u ) { if( d[i].v ) { d[i].v--; m[SCREEN_RENDER][d[i].i] = (d[i].q & 255) | ((X() % MAX_FADE_IN_TIME > d[i].v) ? 0xf700 : 0xff00); } else { d[i].u--; m[SCREEN_RENDER][d[i].i] = (X() % MAX_FADE_IN_TIME > d[i].u) ? ((X() & 3) ? d[i].q : d[i].q ^ 0x100) : ((d[i].q & 255) | 0xf700); } } else { m[SCREEN_RENDER][d[i].i] = X() & 3 ? d[i].q : d[i].q ^ 0x100; } } void T(void) { if( d[i].u ) { if( d[i].v ) { d[i].v--; m[SCREEN_RENDER][d[i].i] = (d[i].q & 255) | ((X() % MAX_FADE_IN_TIME > d[i].v) ? 0xf700 : 0xff00); } else { d[i].u--; m[SCREEN_RENDER][d[i].i] = (X() % MAX_FADE_IN_TIME > d[i].u) ? ((X() & 7) ? d[i].q : d[i].q ^ 0x800) : ((d[i].q & 255) | 0xf700); } } else { m[SCREEN_RENDER][d[i].i] = (X() & 7) ? d[i].q : d[i].q ^ 0x800; } } void U(void) { k = h >> MOON_PRECISION; for(i = 0; i < 10; i++) { if( k + i >= 0 && k + i < 80 ) { for(j = 0; j < 5; j++) m[SCREEN_RENDER][n[j + 2] + i + k] = _0[j][i]; } } if( h++ > (82 << MOON_PRECISION) ) h = -12 << MOON_PRECISION; } void V(void) { if( d[i].u ) { if( d[i].v ) { d[i].v--; m[SCREEN_RENDER][d[i].i] = (d[i].q & 255) | ((X() % MAX_FADE_IN_TIME > d[i].v) ? 0xf700 : 0xff00); } else { d[i].u--; m[SCREEN_RENDER][d[i].i] = (X() % MAX_FADE_IN_TIME > d[i].u) ? d[i].q : ((d[i].q & 255) | 0xf700); } } else { m[SCREEN_RENDER][d[i].i] = d[i].q; } } void Q(void) { for(i = 0; i < 2000;) m[SCREEN_RENDER][i++] = 0; U(); for(i = 0; i < e; i++) { if( d[i].p & 1 ) { if( d[i].p & 2 ) V(); else T(); } else { if( d[i].p & 2 ) S(); else R(); } } B(); } void E(void) { C(); for(i = c = 0; i < 2000;) m[SCREEN_ALPHA][i++] = 0; for(i = 0; i < e; i++) { if( d[i].p ) { d[i].u = d[i].v = 0; d[i].q = ( d[i].p == PARTICLE_TREE ? ((d[i].q & 0x8000) ? 0xf700 : 0x7f00) : ((d[i].q & 0x8000) ? 0x7800 : 0x8700) ) | (d[i].q & 255); } } if( X() & 1 ) { c++; p = 1; } else { p = 0; } A(); for(f = 1; f;) { if( kbhit() ) { if( c < 3 + (int)p ) { C(); A(); } else { break; } } else { Q(); } for(i = f = 0; i < e; i++) { if( !d[i].p ) { if( d[i].u >= 0 && d[i].v < (25 << Y_PRECISION) ) f++; else d[i].i = d[i].j = 0; } } } for(i = 0; i < 2000;) { d[i].u = d[i].x << X_PRECISION; d[i++].v = d[i].y << Y_PRECISION; } for(i = 0; i < 2000;) m[SCREEN_RENDER][i++] = -1; B(); for(k = 1; k;) { for(i = 0; i < 2000;) m[SCREEN_RENDER][i++] = 0; U(); for(i = k = 0; i < e; i++) { if( d[i].p ) { d[i].x = d[i].u >> X_PRECISION; d[i].y = d[i].v >> Y_PRECISION; if( d[i].y >= 0 && d[i].y < 25 && d[i].x >= 0 && d[i].x < 80 ) { k++; m[SCREEN_RENDER][n[d[i].y] + d[i].x] = d[i].q; if( !(j = m[SCREEN_ALPHA][d[i].i]) ) { d[i].v += 1 << (Y_PRECISION - 2); } else { d[i].u += a[--j]; d[i].v += b[j]; } } } } B(); if( kbhit() ) { C(); break; } } if( p > 0 ) c--; } void W(void) { for(i = e = 0; i < 2000; i++) { if( (m[SCREEN_SAVE][i] & 255) != 32 || (m[SCREEN_SAVE][i] & 0xf000) ) { d[e].u = X() % 4 + 2; d[e].v = X() % 6 + 2; d[e].i = X() % 32 + 20; d[e].j = X() % 8; d[e].x = (i % 80) << d[e].u; d[e].y = (i / 80) << d[e].v; d[e++].q = m[SCREEN_SAVE][i]; } } for(f = 1; f && !kbhit();) { for(i = f = 0; i < 2000;) m[SCREEN_RENDER][i++] = 0; for(k = e - 1; k >= 0; k--) { if( d[k].i ) { f++; i = (d[k].x + (j = d[k].i * d[k].i)) >> d[k].u; j = (d[k].y - (d[k].j ? j : 0)) >> d[k].v; if( j >= 0 && j < 25 && i >=0 && i < 80 ) m[SCREEN_RENDER][n[j] + i] = d[k].q; if( !(--d[k].i) ) { d[k].j = n[d[k].y >> d[k].v] + (d[k].x >> d[k].u); } } else { m[SCREEN_RENDER][d[k].j] = d[k].q; } } B(); } if( kbhit() ) C(); for(i = 0; i < 2000;) o[i++] = m[SCREEN_SAVE][i]; } void cdecl main(void) { _5 = *_3; j = -80; for(i = 0; i < 25;) n[i++] = j += 80; _asm { mov ax, 1003h xor bx, bx int 10h mov ah, 2ah int 21h mov k, cx mov j, dx } i = j >> 8; j &= 255; O(); w = (g - 15 >= -1 && g - 15 <= 1) ? 1 : 0; L(); D(); do { M(); N(); while( !kbhit() ) { Q(); P(); } E(); } while( c <= 1 ); W(); _asm { mov ax, 1003h mov bx, 1 int 10h } }