adjust to match the uname changes.
[AROS-Contrib.git] / Demo / kdp / tun2.c
blob4c61de06235ee8c5eafa668d0c474086d3008da5
1 #include "kdp.h"
2 #include "kdpgfx.h"
3 #include <math.h>
5 UBYTE *text1;
6 UBYTE *text2;
7 int light[41*26];
8 int blokx[41*26];
9 int bloky[41*26];
10 UBYTE ltab[512];
11 UBYTE vm1[64000];
12 UBYTE vm2[64000];
13 UBYTE pal[256*3];
14 //UWORD *color00=(UWORD *) 0xDFF180;
18 void make_tuntab(float persp,float po,float rot,float ox,float oy,float mulx,float muly,float tox,float toy)
20 float xx, yy;
21 int x,y;
22 float vx, vy = 0.0;
23 float pe;
24 float mx;
25 float dvx=0;
26 int blk;
27 for (y=0; y<26; y++)
28 for (x=0; x<41; x++)
30 xx=(tox+x-20);
31 yy=(toy+y-13);
32 vx=atan2(xx,yy)*((256/(2*PI)));
33 pe=mulx+(sin(rot+(2*PI*vx/(256/5)))*po);
34 mx=sqrt((xx*xx)+(yy*yy));
35 if (mx!=0)
36 vy=pe/mx;
38 blk=y*41+x;
39 blokx[blk]=(vx+ox+dvx)*256;
40 bloky[blk]=(vy+oy)*256;
44 void stampblok(UBYTE *vmem,UBYTE *txt)
46 int dx1, dy1, dx2, dy2, dx, dy;
47 int tx1, ty1, tx2, ty2, tx, ty;
48 int x, y, o;
49 int x2,y2,blk;
50 for(y2=0;y2<25;y2++)
51 for(x2=0;x2<40;x2++)
54 blk=41*y2+x2;
56 tx1 = blokx[blk]<<8;
57 ty1 = bloky[blk]<<8;
58 tx2 = blokx[blk+1]<<8;
59 ty2 = bloky[blk+1]<<8;
61 dx1 = ((blokx[blk+41]<<8)-tx1) >> 3;
62 dy1 = ((bloky[blk+41]<<8)-ty1) >> 3;
63 dx2 = ((blokx[blk+42]<<8)-tx2) >> 3;
64 dy2 = ((bloky[blk+42]<<8)-ty2) >> 3;
67 o=320*(y2<<3)+(x2<<3);
68 for (y=0; y<=7; y++)
71 tx = tx1; ty = ty1;
72 dx = ((tx2-tx1)) >> 3;
73 dy = ((ty2-ty1)) >> 3;
75 if (dx>16*65536) dx=-(32*65536-dx);
76 if (dx<-(16*65536)) dx=32*65536-dx;
77 for (x=0; x<=7; x++ )
79 vmem[o] = txt[(((ty>>8) & 0x0000FF00)+(tx >> 16)) & 0xFFFF]>>1;
80 //vmem[o] = ltab[ txt[(((ty >>8) & 0x0000FF00)+(tx >> 16)) & 0xFFFF]+(UBYTE)(lx3>>16)];
81 tx += dx;
82 ty += dy;
84 o++;
86 tx1 += dx1;
87 ty1 += dy1;
89 tx2 += dx2;
90 ty2 += dy2;
92 o += 312;
99 int main(int argc, char **argv)
101 KDPscreen screen;
102 KDPmouse mouse;
103 int i;
104 // int x,y;
105 float ox = 0.0,oy = 0.0;
106 float mx,my;
107 float mulx,muly;
108 UBYTE *vmem;
109 float mmx;
110 float rot = 0.0;
111 float tox = 0.0,toy = 0.0;
112 float doy = 0.0;
113 float qx = 0.0,qy = 0.0;
114 float l;
115 // float sl;
116 text1=KDPloadFile("raw/tg-1.raw");
117 text2=KDPloadFile("raw/tg-2.raw");
118 //pal=KDPloadFile("tun-l.pal");
119 for(i=0;i<512;i++)
121 l=i/2;
122 //sl=((PI/2)/255)*i;
123 //l=(sin(sl)*512)-200;
124 if (l<0) l=0;
125 if (l>127) l=127;
127 ltab[i]=l;
128 //ltab[i+256]=255;
130 if (KDPopen(&screen))
132 vmem=screen.vmem;
133 KDPgetMouse(&mouse);
134 mouse.button=0;
135 mx=2;my=8;
136 mmx=1.8;
137 mulx=900;muly=0;
138 //KDPsetPal(&pal[0x30]);
139 for(i=0;i<128;i++)
141 KDPsetColor(i,i,i/4,i);
142 KDPsetColor(128+i,0,i,i*2);
144 KDPpalRange(0,0,0,
145 50,128,100,
146 0,128,pal);
147 KDPpalRange(0,0,0,
148 55,60,255,
149 128,255,pal);
150 KDPsetPal(pal);
151 while(mouse.button!=3)
153 if (mouse.button==1)
155 mx+=(float)mouse.xspeed/10;
156 my+=mouse.yspeed;
157 //mx=0;
159 if (mouse.button==0)
161 ox+=(float)mouse.xspeed/10;
162 doy+=(float)mouse.yspeed/50;
164 if (mouse.button==2)
166 //mulx+=(float)mouse.xspeed;
167 //muly+=(float)mouse.yspeed/100;
168 mmx+=(float)mouse.xspeed/100;
169 /*tox-=(float)mouse.xspeed/10;
170 toy-=(float)mouse.yspeed/10;*/
172 else
174 tox=sin(qx)*20;
175 toy=cos(qy)*13;
177 qx+=0.02;
178 qy+=0.03;
179 oy+=doy;
180 rot+=0.1;
181 ox+=0.5;
182 //ox=rot*4;
183 //mx=2+sin(rot*2)*1.8;
184 //mx+=0.03;
185 //my+=(float)mouse.yspeed/50;
187 /*for(x=0;x<41;x++)
188 for(y=0;y<26;y++)
190 blokx[x][y]=(x-20)*mx;
191 bloky[x][y]=(y-13)*my;
192 } */
194 make_tuntab(mx,0,rot,ox*-2,oy,mulx,muly,tox,toy);
195 stampblok(vmem,text1);
196 make_tuntab(mx,my,rot,ox*5,oy,mulx*mmx,muly,tox,toy);
197 stampblok(vm1,text2);
198 make_tuntab(mx,my,rot,ox*-2,oy,mulx*1.3,muly,tox,toy);
199 stampblok(vm2,text1);
201 for(i=0;i<64000;i++)
202 if (vm2[i]>mx) vm1[i]=128-ltab[80+vm1[i]];
204 //for(i=0;i<64000;i++)
205 // if (vmem[i]<mx) vmem[i]=vm2[i];
207 for(i=0;i<64000;i++)
208 if (vmem[i]<mx) vmem[i]=vm1[i]+128;
210 //KDPsetColor(0,0,0,0);
211 KDPwaitVr();
212 //KDPsetColor(0,255,0,0);
213 KDPshow(vmem);
214 KDPgetMouse(&mouse);
217 KDPclose(&screen);
219 return 0;