]> git.pld-linux.org Git - packages/fuse.git/blob - fuse-tmx.patch
- use new bconds, strict internal deps
[packages/fuse.git] / fuse-tmx.patch
1 --- display.c.orig      Tue Jan 28 08:43:52 2003
2 +++ display.c   Tue Jan 28 14:52:42 2003
3 @@ -111,20 +111,9 @@
4  
5  static WORD display_get_addr(int x, int y)
6  {
7 -  switch( scld_screenmode )
8 -  {
9 -    case HIRES:
10 -      return display_line_start[y]+x;
11 -      break;
12 -    case ALTDFILE:  /* Same as standard, but base at 0x6000 */
13 -      return display_line_start[y]+x+ALTDFILE_OFFSET;
14 -      break;
15 -    case EXTCOLOUR:
16 -    default:  /* Standard Speccy screen */
17 -      return display_line_start[y]+x;
18 -      break;
19 -  }
20 -
21 +  if (scld_altdfile) {
22 +    return display_line_start[y]+x+ALTDFILE_OFFSET;
23 +  } else return display_line_start[y]+x;
24    ui_error( UI_ERROR_ERROR, "Impossible screenmode `%d'", scld_screenmode );
25    fuse_abort();
26  }
27 @@ -206,7 +195,7 @@
28  {
29  
30    int x, screen_y, redraw, colour;
31 -  BYTE data, ink, paper;
32 +  BYTE data, data2, ink, paper;
33    WORD hires_data;
34  
35    redraw = 0;
36 @@ -227,20 +216,32 @@
37            display_is_dirty[screen_y] >>= 1, x++ ) {
38  
39         /* Skip to next 8 pixel chunk if this chunk is clean */
40 -       if( ! ( display_is_dirty[screen_y] & 0x01 ) ) continue;
41 -
42 -       data = read_screen_memory( display_get_addr( x, screen_y ) );
43 -       display_get_attr( x, screen_y, &ink, &paper );
44 +           if( ! ( display_is_dirty[screen_y] & 0x01 ) ) continue;
45  
46 -       if( scld_hires ) {
47 -         hires_data = (data<<8) +
48 -           read_screen_memory( display_get_addr( x, screen_y ) +
49 -                               ALTDFILE_OFFSET
50 -                             );
51 -
52 -         display_plot16( x<<1, screen_y, hires_data, ink, paper );
53 -       } else
54 -         display_plot8( x<<1, screen_y, data, ink, paper );
55 +        display_get_attr( x, screen_y, &ink, &paper );
56 +        data = read_screen_memory( display_get_addr( x, screen_y ) );
57 +        if (scld_hires) {
58 +          switch (scld_screenmode) {
59 +            case 4:
60 +              data2 = read_screen_memory( display_attr_start[screen_y] + x);
61 +              break;
62 +            case 5:
63 +              data2 = read_screen_memory( display_attr_start[screen_y] + x + ALTDFILE_OFFSET);
64 +              break;
65 +            case 6:
66 +              data2 = read_screen_memory( display_get_addr( x, screen_y ) + ALTDFILE_OFFSET);
67 +              break;
68 +            case 7:
69 +              data2 = data;
70 +              break;
71 +            default:
72 +              break;
73 +          }
74 +          hires_data = (data << 8) + data2;
75 +             display_plot16( x<<1, screen_y, hires_data, ink, paper );    
76 +        } else {
77 +               display_plot8( x<<1, screen_y, data, ink, paper );
78 +        }    
79        }
80  
81        /* Need to redraw this line */
82 @@ -299,35 +300,43 @@
83     `address'; 0x4000 <= address < 0x5b00 */
84  void display_dirty( WORD address )
85  {
86 -  switch( scld_screenmode )
87 -  {
88 -    case ALTDFILE:  /* Same as standard, but base at 0x6000 */
89 +  switch (scld_screenmode) {
90 +    case 0: /* standard Speccy screen */
91 +    case 4: /* strange mode */
92 +      if(address>=0x5b00)
93 +        return;
94 +      if(address<0x5800) {             /* 0x5800 = first attributes byte */
95 +        display_dirty8(address);
96 +      } else {
97 +        display_dirty64(address);
98 +      }
99 +      break;
100 +    case 1: /* second screen */
101 +    case 5: /* strange mode using second screen */      
102        if( address >= 0x7b00 )
103          return;
104 -      if( address < 0x7800 ) {         /* 0x7800 = first attributes byte */
105 +      if( address >= 0x6000 && address < 0x7800 ) {            /* 0x7800 = first attributes byte */
106          display_dirty8(address-ALTDFILE_OFFSET);
107        } else {
108          display_dirty64(address-ALTDFILE_OFFSET);
109        }
110        break;
111  
112 -    case HIRES:
113 -    case EXTCOLOUR:
114 +    case 2: /* extended colours */
115 +    case 6: /* hires mode */     
116        if((address>=0x7800) || ((address>=0x5800) && (address<0x6000)))
117          return;
118        if(address>=0x6000) address-=ALTDFILE_OFFSET;
119        display_dirty8(address);
120        break;
121 -    
122 -    default:  /* Standard Speccy screen */
123 -      if(address>=0x5b00)
124 -        return;
125 -      if(address<0x5800) {             /* 0x5800 = first attributes byte */
126 -        display_dirty8(address);
127 -      } else {
128 -        display_dirty64(address);
129 +    case 3: /* extended colours, but attributes and data taken from second screen */
130 +    case 7: /* hires mode, but data taken only from second screen */
131 +      if( address >= 0x6000 && address < 0x7800 ) {            /* 0x7800 = first attributes byte */
132 +        display_dirty8(address-ALTDFILE_OFFSET);
133        }
134        break;
135 +    default:
136 +      break;
137    }
138  }
139  
140 @@ -408,23 +417,16 @@
141  {
142    BYTE attr;
143  
144 -  switch( scld_screenmode )
145 -  {
146 -    case ALTDFILE:  /* Same as standard, but base at 0x6000 */
147 -      attr=read_screen_memory(display_attr_start[y]+x+ALTDFILE_OFFSET);
148 -      break;
149 -    case EXTCOLOUR:
150 -      attr=read_screen_memory(display_line_start[y]+x+ALTDFILE_OFFSET);
151 -      break;
152 -    case HIRES:
153 -    case (HIRES|EXTCOLOUR):
154 -      attr=hires_get_attr();
155 -      break;
156 -    default: /* Standard Speccy screen */
157 -      attr=read_screen_memory(display_attr_start[y]+x);
158 -      break;
159 -  }
160 +  if (scld_hires) {
161 +    attr = hires_get_attr();
162 +  } else {
163 +    if (scld_extcolour) {
164 +      attr = read_screen_memory(display_line_start[y]+x+ALTDFILE_OFFSET);
165 +    } else if (scld_altdfile) {
166 +        attr = read_screen_memory(display_attr_start[y]+x+ALTDFILE_OFFSET);
167 +    } else attr = read_screen_memory(display_attr_start[y]+x);
168  
169 +  }
170    display_parse_attr(attr,ink,paper);
171  }
172  
173 @@ -571,32 +573,27 @@
174  static void display_dirty_flashing(void)
175  {
176    int offset; BYTE attr;
177 -
178 -  switch (scld_screenmode)
179 -  {
180 -    case ALTDFILE:  /* Same as standard, but base at 0x6000 */
181 -      for(offset=0x3800;offset<0x3b00;offset++) {
182 -        attr=read_screen_memory(offset);
183 -        if( attr & 0x80 )
184 -          display_dirty64(offset+ALTDFILE_OFFSET);
185 -      }
186 -      break;
187 -    case EXTCOLOUR:
188 +  
189 +  if (!scld_hires) {
190 +    if (scld_extcolour) {
191        for(offset=ALTDFILE_OFFSET;offset<0x3800;offset++) {
192          attr=read_screen_memory(offset);
193          if( attr & 0x80 )
194 -          display_dirty8(offset-ALTDFILE_OFFSET);
195 +          display_dirty8(offset+ALTDFILE_OFFSET);
196        }
197 -      break;
198 -    case HIRES:
199 -      break;
200 -    default:  /* Standard Speccy screen */
201 -      for(offset=0x1800;offset<0x1b00;offset++) {
202 -        attr=read_screen_memory(offset);
203 -        if( attr & 0x80 )
204 -          display_dirty64(offset+0x4000);
205 +    } else if (scld_altdfile) {
206 +        for(offset=0x3800;offset<0x3b00;offset++) {
207 +          attr=read_screen_memory(offset);
208 +          if( attr & 0x80 )
209 +            display_dirty64(offset+ALTDFILE_OFFSET);
210 +        }
211 +      } else { /* Standard Speccy screen */
212 +          for(offset=0x1800;offset<0x1b00;offset++) {
213 +            attr=read_screen_memory(offset);
214 +            if( attr & 0x80 )
215 +              display_dirty64(offset+0x4000);
216 +          }
217        }
218 -      break;
219    }
220  }
221  
222 @@ -610,16 +607,6 @@
223    }
224  
225    for(y=0;y<DISPLAY_HEIGHT;y++) {
226 -    for(x=0;x<DISPLAY_WIDTH_COLS;x++) {
227 -      display_get_attr(x,y,&ink,&paper);
228 -       if( scld_hires ) {
229 -         hires_data = (read_screen_memory( display_get_addr(x,y) ) << 8 ) +
230 -           read_screen_memory( display_get_addr( x, y ) + ALTDFILE_OFFSET );
231 -         display_plot16( x<<1, y, hires_data, ink, paper );
232 -       } else
233 -         display_plot8( x<<1, y, read_screen_memory( display_get_addr(x,y) ),
234 -                        ink, paper );
235 -    }
236      display_is_dirty[y] = display_all_dirty;   /* Marks all pixels as dirty */
237    }
238  }
This page took 0.230228 seconds and 3 git commands to generate.