]> git.pld-linux.org Git - packages/fuse.git/blame - fuse-tmx.patch
- use new bconds, strict internal deps
[packages/fuse.git] / fuse-tmx.patch
CommitLineData
2c00b10d 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.224762 seconds and 4 git commands to generate.