Subversion Repositories shark

Rev

Rev 1655 | Go to most recent revision | 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
}