Mercurial > hg > forks > pwpunix
annotate final_isi/fiscroll.c @ 69:c13a2f8c5b10
Rename files and some minor cleanups.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 01 Jun 2012 17:41:15 +0300 |
parents | acb5694e93d9 |
children |
rev | line source |
---|---|
0 | 1 #include "wrapper.h" |
2 | |
3 #include "fisi.h" | |
4 | |
5 /********************** sKROLLER *******************************/ | |
6 | |
7 struct{ | |
8 int offset; | |
9 int zoom; | |
10 }skrl[50]; | |
11 | |
12 /*extern char txr_slime[];*/ | |
13 /*#define skrmap0 txr_slime*/ | |
14 | |
15 char skrmap0[256]={ | |
16 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00, | |
17 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00, | |
18 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00, | |
19 0x01,0x01,0x00,0x01,0x01,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x01,0x01,0x01, | |
20 0x01,0x01,0x00,0x01,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x01,0x01, | |
21 0x01,0x01,0x01,0x01,0x10,0x11,0x11,0x10,0x10,0x10,0x10,0x11,0x11,0x10,0x10,0x01, | |
22 0x01,0x01,0x01,0x10,0x10,0x11,0x10,0x10,0x01,0x01,0x10,0x10,0x11,0x11,0x10,0x01, | |
23 0x01,0x01,0x01,0x10,0x11,0x11,0x10,0x10,0x01,0x01,0x10,0x10,0x11,0x11,0x10,0x01, | |
24 0x01,0x01,0x10,0x10,0x11,0x11,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x10,0x01,0x01, | |
25 0x01,0x10,0x10,0x11,0x11,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x10,0x10,0x01,0x01, | |
26 0x01,0x10,0x11,0x11,0x10,0x01,0x10,0x10,0x11,0x10,0x10,0x10,0x10,0x01,0x01,0x10, | |
27 0x01,0x10,0x11,0x10,0x01,0x01,0x01,0x10,0x11,0x10,0x01,0x01,0x01,0x01,0x11,0x10, | |
28 0x01,0x10,0x11,0x10,0x10,0x01,0x10,0x10,0x11,0x10,0x01,0x10,0x11,0x10,0x11,0x10, | |
29 0x01,0x10,0x10,0x11,0x10,0x10,0x10,0x11,0x10,0x10,0x01,0x10,0x11,0x10,0x01,0x10, | |
30 0x01,0x01,0x10,0x11,0x11,0x11,0x11,0x11,0x10,0x01,0x01,0x01,0x01,0x10,0x01,0x00, | |
31 0x00,0x01,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x01,0x01,0x01,0x01,0x01,0x01,0x01 | |
32 }; | |
33 | |
34 char skrmap[512]; | |
35 unsigned char skramble[256]; | |
36 | |
37 extern char sini[]; | |
38 | |
39 int skr_parms; | |
40 int skr_ambles; | |
41 | |
42 extern char lensb[],txr_neon[],txr_dunneon[],txr_slime[]; | |
43 | |
69
c13a2f8c5b10
Rename files and some minor cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents:
0
diff
changeset
|
44 void scr_txr(int k) |
0 | 45 { |
46 int i;char*j=skrmap;char*txr; | |
47 if(k==0)txr=skrmap0; | |
48 if(k==1)txr=lensb; | |
49 if(k==2)txr=txr_neon; | |
50 if(k==3)txr=txr_dunneon; | |
51 if(k==4)txr=txr_slime; | |
52 for(i=256;i;i--)*j++=*txr++; | |
53 } | |
54 | |
69
c13a2f8c5b10
Rename files and some minor cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents:
0
diff
changeset
|
55 void scroller_init(int parms) |
0 | 56 { |
57 int y; | |
58 skr_parms=parms; | |
59 | |
60 if(parms&HORIZON){ | |
61 for(y=0;y<50;y++){ | |
62 skrl[y].offset=(200/(4+y))<<12; /* 10+ */ | |
63 skrl[y].zoom =1000/(10+y); /* 2400 */ | |
64 } | |
65 }else | |
66 for(y=0;y<50;y++){ | |
67 skrl[y].offset=(1200/(20+y))<<12; /* 1200 */ | |
68 skrl[y].zoom =2000/(10+y); /* 2000 */ | |
69 } | |
70 | |
71 if(parms&NOSKRAMBLE){ | |
72 memcpy(skrmap,skrmap0,256); | |
73 skr_ambles=0; | |
74 } | |
75 else | |
76 { | |
77 memset(skrmap,0,256); | |
78 for(y=0;y<256;y++)skramble[y]=y; | |
79 for(y=0;y<256;y++){ | |
80 int j=rand()&255,tmp; | |
81 tmp=skramble[j];skramble[j]=skramble[y];skramble[y]=tmp; | |
82 } | |
83 skr_ambles=256; | |
84 } | |
85 } | |
86 | |
69
c13a2f8c5b10
Rename files and some minor cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents:
0
diff
changeset
|
87 void scroller_do(char*buf,int t,int hg) |
0 | 88 { |
89 | |
90 static int lastt=0; | |
91 char*d=buf;int y,offy; | |
92 | |
93 if(hg<0)hg=0;else if(hg>49)hg=49; | |
94 | |
95 memset(d,0,80*(50-hg)); | |
96 d+=80*(50-hg); | |
97 | |
98 if(skr_ambles){int tt=t;if(tt>256)tt=256; | |
99 while(lastt<tt)if(skr_ambles){ | |
100 int j=skramble[skr_ambles--&255]; | |
101 skrmap[j]=skrmap0[j]; | |
102 /*skrmap[j+256]=skrmap0[j];*/ | |
103 lastt++; | |
104 }} | |
105 | |
106 if(skr_parms&HORIZON) | |
107 offy=-(t<<6)+(t<<12)&~3;else offy=(t<<6); | |
108 | |
109 for(y=0;y<hg;y++){ | |
110 register int ofz=skrl[y].offset+offy,dofz=skrl[y].zoom; | |
111 #ifndef MSDOS_ASM | |
112 {int x=80;for(;x;x--)*d++=skrmap[((ofz+=dofz)>>8)&255];} | |
113 #else | |
114 skr_dorow(d,skrmap,dofz,ofz); | |
115 d+=80; | |
116 #endif | |
117 } | |
118 } |