Rev 1655 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1655 | giacomo | 1 | /********************************************reading.c******************************/ |
2 | #include <kernel/func.h> |
||
3 | #include <drivers/glib.h> |
||
4 | #include <ll/i386/x-dos.h> |
||
5 | #include <stdlib.h> |
||
6 | #include <string.h> |
||
7 | #include "include/constant.h" |
||
8 | #define rgb rgb16 |
||
9 | |||
10 | DWORD macchine[ROW][COL][NCAR]; |
||
11 | DWORD strada[H][W]; |
||
12 | DWORD sprites[ROW][COL][NO_SPRITE]; |
||
13 | DWORD y_sem[4][SH][SW]; |
||
14 | DWORD r_sem[4][SH][SW]; |
||
15 | DWORD g_sem[4][SH][SW]; |
||
16 | DWORD faces[2][74][47]; |
||
17 | extern tl_data tl_data_array[MAX_TL]; |
||
18 | |||
19 | char nomefile[17]; |
||
20 | char nomestrada[17]; |
||
21 | char nomesem[17]; |
||
22 | char nomesprite[16]; |
||
23 | |||
24 | void getSem() { |
||
25 | int i,j,k,count; |
||
26 | BYTE colore[3]; |
||
27 | DOS_FILE *fp; |
||
28 | char letter[5]; |
||
29 | |||
30 | strcpy(letter,"lrud"); |
||
31 | strcpy(nomesem,"sem/green_ .raw"); |
||
32 | |||
33 | //green traffic light.... |
||
34 | for(k=0;k<4;k++) { |
||
35 | nomesem[10]=letter[k]; |
||
36 | fp=DOS_fopen(nomesem,"r"); |
||
37 | if(!fp) { |
||
38 | perror(nomesem); |
||
39 | sys_abort(1); |
||
40 | } |
||
41 | for(i=0;i<SH;i++) { |
||
42 | for(j=0;j<SW;j++) { |
||
43 | count=DOS_fread(&colore,sizeof(BYTE),3,fp); |
||
44 | if(count!=3) break; |
||
45 | g_sem[k][i][j]=rgb(colore[0],colore[1],colore[2]); |
||
46 | } |
||
47 | } |
||
48 | DOS_fclose(fp); |
||
49 | fp=0; |
||
50 | } |
||
51 | |||
52 | //red traffic light... |
||
53 | strcpy(nomesem,"sem/red_ .raw"); |
||
54 | for(k=0;k<4;k++) { |
||
55 | nomesem[8]=letter[k]; |
||
56 | fp=DOS_fopen(nomesem,"r"); |
||
57 | if(!fp) { |
||
58 | perror(nomesem); |
||
59 | sys_abort(1); |
||
60 | } |
||
61 | for(i=0;i<SH;i++) { |
||
62 | for(j=0;j<SW;j++) { |
||
63 | count=DOS_fread(&colore,sizeof(BYTE),3,fp); |
||
64 | if(count!=3) break; |
||
65 | r_sem[k][i][j]=rgb(colore[0],colore[1],colore[2]); |
||
66 | } |
||
67 | } |
||
68 | DOS_fclose(fp); |
||
69 | fp=0; |
||
70 | } |
||
71 | |||
72 | //yellow traffic light... |
||
73 | strcpy(nomesem,"sem/yellow_ .raw"); |
||
74 | for(k=0;k<4;k++) { |
||
75 | nomesem[11]=letter[k]; |
||
76 | fp=DOS_fopen(nomesem,"r"); |
||
77 | if(!fp) { |
||
78 | perror(nomesem); |
||
79 | sys_abort(1); |
||
80 | } |
||
81 | for(i=0;i<SH;i++) { |
||
82 | for(j=0;j<SW;j++) { |
||
83 | count=DOS_fread(&colore,sizeof(BYTE),3,fp); |
||
84 | if(count!=3) break; |
||
85 | y_sem[k][i][j]=rgb(colore[0],colore[1],colore[2]); |
||
86 | } |
||
87 | } |
||
88 | DOS_fclose(fp); |
||
89 | fp=0; |
||
90 | } |
||
91 | } |
||
92 | |||
93 | void getCars() { |
||
94 | int i,j,k,l,index; |
||
95 | int tmp; |
||
96 | char id_car[3]; |
||
97 | BYTE colore[3]; |
||
98 | DOS_FILE *fp; |
||
99 | |||
100 | strcpy(nomefile,"img/car_XXXn.raw"); |
||
101 | k=0; |
||
102 | for (index=0;index<360;index+=15) { |
||
103 | tmp=index; |
||
104 | for (l=2;l>=0;l--) { |
||
105 | id_car[l]=tmp%10+'0'; |
||
106 | tmp/=10; |
||
107 | } |
||
108 | nomefile[8]=id_car[0]; |
||
109 | nomefile[9]=id_car[1]; |
||
110 | nomefile[10]=id_car[2]; |
||
111 | fp=DOS_fopen(nomefile,"r"); |
||
112 | if (!fp) { |
||
113 | perror(nomefile); |
||
114 | sys_abort(1); |
||
115 | } |
||
116 | |||
117 | for (i=0;i<ROW;i++) { |
||
118 | for (j=0;j<COL;j++) { |
||
119 | DOS_fread(&colore,sizeof(BYTE),3,fp); |
||
120 | macchine[i][j][k]=rgb(colore[0],colore[1],colore[2]); |
||
121 | } |
||
122 | } |
||
123 | DOS_fclose(fp); |
||
124 | fp=0; |
||
125 | k++; |
||
126 | } |
||
127 | } |
||
128 | |||
129 | void getRoad() { |
||
130 | DOS_FILE *fp; |
||
131 | int i,j,test; |
||
132 | BYTE colore[3]; |
||
133 | |||
134 | strcpy(nomestrada,"img/street.raw"); |
||
135 | fp=DOS_fopen(nomestrada,"r"); |
||
136 | if (!fp) { |
||
137 | perror(nomestrada); |
||
138 | sys_abort(1); |
||
139 | } |
||
140 | |||
141 | for (i=0;i<H;i++) { |
||
142 | for (j=0;j<W;j++) { |
||
143 | test=DOS_fread(&colore,sizeof(BYTE),3,fp); |
||
144 | if(test!=3) { |
||
145 | perror("Few bytes read!!!!!!\n"); |
||
146 | |||
147 | } |
||
148 | strada[i][j]=rgb(colore[0],colore[1],colore[2]); |
||
149 | } |
||
150 | } |
||
151 | DOS_fclose(fp); |
||
152 | } |
||
153 | |||
154 | void getSprites(void) { |
||
155 | int i,j,k; |
||
156 | DOS_FILE *fp; |
||
157 | BYTE colore[3]; |
||
158 | |||
159 | strcpy(nomesprite,"sprite/sp_X.raw"); |
||
160 | for (k=0;k<NO_SPRITE;k++) { |
||
161 | nomesprite[10]=k+'0'; |
||
162 | fp=DOS_fopen(nomesprite,"r"); |
||
163 | if (!fp) { |
||
164 | perror(nomesprite); |
||
165 | sys_abort(1); |
||
166 | } |
||
167 | for (i=0;i<ROW;i++) { |
||
168 | for (j=0;j<COL;j++) { |
||
169 | DOS_fread(&colore,sizeof(BYTE),3,fp); |
||
170 | sprites[i][j][k]=rgb(colore[0],colore[1],colore[2]); |
||
171 | } |
||
172 | } |
||
173 | DOS_fclose(fp); |
||
174 | fp=0; |
||
175 | } |
||
176 | } |
||
177 | |||
178 | void tl_pos(void) { |
||
179 | DOS_FILE *fp; |
||
180 | int i; |
||
181 | char buf[7]; |
||
182 | int dimx,dimy; |
||
183 | |||
184 | fp=DOS_fopen("sem.raw","r"); |
||
185 | if (!fp) { |
||
186 | perror("sem.raw"); |
||
187 | sys_abort(1); |
||
188 | } |
||
189 | buf[6]='\0'; |
||
190 | for (i=0;i<MAX_TL;i++) { |
||
191 | DOS_fread(&buf,sizeof(char),6,fp); |
||
192 | dimx=(buf[0]-'0')*100+(buf[1]-'0')*10+(buf[2]-'0'); |
||
193 | dimy=(buf[3]-'0')*100+(buf[4]-'0')*10+(buf[5]-'0'); |
||
194 | tl_data_array[i].u.x=dimx; |
||
195 | tl_data_array[i].u.y=dimy; |
||
196 | DOS_fread(&buf,sizeof(char),6,fp); |
||
197 | dimx=(buf[0]-'0')*100+(buf[1]-'0')*10+(buf[2]-'0'); |
||
198 | dimy=(buf[3]-'0')*100+(buf[4]-'0')*10+(buf[5]-'0'); |
||
199 | tl_data_array[i].d.x=dimx; |
||
200 | tl_data_array[i].d.y=dimy; |
||
201 | DOS_fread(&buf,sizeof(char),6,fp); |
||
202 | dimx=(buf[0]-'0')*100+(buf[1]-'0')*10+(buf[2]-'0'); |
||
203 | dimy=(buf[3]-'0')*100+(buf[4]-'0')*10+(buf[5]-'0'); |
||
204 | tl_data_array[i].l.x=dimx; |
||
205 | tl_data_array[i].l.y=dimy; |
||
206 | DOS_fread(&buf,sizeof(char),6,fp); |
||
207 | dimx=(buf[0]-'0')*100+(buf[1]-'0')*10+(buf[2]-'0'); |
||
208 | dimy=(buf[3]-'0')*100+(buf[4]-'0')*10+(buf[5]-'0'); |
||
209 | tl_data_array[i].r.x=dimx; |
||
210 | tl_data_array[i].r.y=dimy; |
||
211 | } |
||
212 | DOS_fclose(fp); |
||
213 | } |
||
214 | |||
215 | void getFaces(void) { |
||
216 | int i,j,k; |
||
217 | DOS_FILE *fp; |
||
218 | BYTE colore[3]; |
||
219 | |||
220 | strcpy(nomesprite,"img/bbX.raw"); |
||
221 | for (k=0;k<2;k++) { |
||
222 | nomesprite[6]=k+'0'; |
||
223 | fp=DOS_fopen(nomesprite,"r"); |
||
224 | if (!fp) { |
||
225 | perror(nomesprite); |
||
226 | sys_abort(1); |
||
227 | } |
||
228 | for (i=0;i<74;i++) { |
||
229 | for (j=0;j<47;j++) { |
||
230 | DOS_fread(&colore,sizeof(BYTE),3,fp); |
||
231 | faces[k][i][j]=rgb(colore[0],colore[1],colore[2]); |
||
232 | } |
||
233 | } |
||
234 | DOS_fclose(fp); |
||
235 | fp=0; |
||
236 | } |
||
237 | } |