Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1088 | alone | 1 | #include "std.h" |
2 | |||
3 | #include "emul.h" |
||
4 | #include "vars.h" |
||
5 | #include "draw.h" |
||
6 | #include "dxrframe.h" |
||
7 | #include "dxr_4bpp.h" |
||
8 | |||
9 | // AlCo 4bpp mode |
||
10 | static const int p4bpp_ofs[] = |
||
11 | { |
||
12 | 0x00000000 - int(PAGE), 0x00004000 - int(PAGE), 0x00002000 - int(PAGE), 0x00006000 - int(PAGE), |
||
13 | 0x00000001 - int(PAGE), 0x00004001 - int(PAGE), 0x00002001 - int(PAGE), 0x00006001 - int(PAGE), |
||
14 | 0x00000002 - int(PAGE), 0x00004002 - int(PAGE), 0x00002002 - int(PAGE), 0x00006002 - int(PAGE), |
||
15 | 0x00000003 - int(PAGE), 0x00004003 - int(PAGE), 0x00002003 - int(PAGE), 0x00006003 - int(PAGE), |
||
16 | 0x00000004 - int(PAGE), 0x00004004 - int(PAGE), 0x00002004 - int(PAGE), 0x00006004 - int(PAGE), |
||
17 | 0x00000005 - int(PAGE), 0x00004005 - int(PAGE), 0x00002005 - int(PAGE), 0x00006005 - int(PAGE), |
||
18 | 0x00000006 - int(PAGE), 0x00004006 - int(PAGE), 0x00002006 - int(PAGE), 0x00006006 - int(PAGE), |
||
19 | 0x00000007 - int(PAGE), 0x00004007 - int(PAGE), 0x00002007 - int(PAGE), 0x00006007 - int(PAGE), |
||
20 | 0x00000008 - int(PAGE), 0x00004008 - int(PAGE), 0x00002008 - int(PAGE), 0x00006008 - int(PAGE), |
||
21 | 0x00000009 - int(PAGE), 0x00004009 - int(PAGE), 0x00002009 - int(PAGE), 0x00006009 - int(PAGE), |
||
22 | 0x0000000A - int(PAGE), 0x0000400A - int(PAGE), 0x0000200A - int(PAGE), 0x0000600A - int(PAGE), |
||
23 | 0x0000000B - int(PAGE), 0x0000400B - int(PAGE), 0x0000200B - int(PAGE), 0x0000600B - int(PAGE), |
||
24 | 0x0000000C - int(PAGE), 0x0000400C - int(PAGE), 0x0000200C - int(PAGE), 0x0000600C - int(PAGE), |
||
25 | 0x0000000D - int(PAGE), 0x0000400D - int(PAGE), 0x0000200D - int(PAGE), 0x0000600D - int(PAGE), |
||
26 | 0x0000000E - int(PAGE), 0x0000400E - int(PAGE), 0x0000200E - int(PAGE), 0x0000600E - int(PAGE), |
||
27 | 0x0000000F - int(PAGE), 0x0000400F - int(PAGE), 0x0000200F - int(PAGE), 0x0000600F - int(PAGE), |
||
28 | 0x00000010 - int(PAGE), 0x00004010 - int(PAGE), 0x00002010 - int(PAGE), 0x00006010 - int(PAGE), |
||
29 | 0x00000011 - int(PAGE), 0x00004011 - int(PAGE), 0x00002011 - int(PAGE), 0x00006011 - int(PAGE), |
||
30 | 0x00000012 - int(PAGE), 0x00004012 - int(PAGE), 0x00002012 - int(PAGE), 0x00006012 - int(PAGE), |
||
31 | 0x00000013 - int(PAGE), 0x00004013 - int(PAGE), 0x00002013 - int(PAGE), 0x00006013 - int(PAGE), |
||
32 | 0x00000014 - int(PAGE), 0x00004014 - int(PAGE), 0x00002014 - int(PAGE), 0x00006014 - int(PAGE), |
||
33 | 0x00000015 - int(PAGE), 0x00004015 - int(PAGE), 0x00002015 - int(PAGE), 0x00006015 - int(PAGE), |
||
34 | 0x00000016 - int(PAGE), 0x00004016 - int(PAGE), 0x00002016 - int(PAGE), 0x00006016 - int(PAGE), |
||
35 | 0x00000017 - int(PAGE), 0x00004017 - int(PAGE), 0x00002017 - int(PAGE), 0x00006017 - int(PAGE), |
||
36 | 0x00000018 - int(PAGE), 0x00004018 - int(PAGE), 0x00002018 - int(PAGE), 0x00006018 - int(PAGE), |
||
37 | 0x00000019 - int(PAGE), 0x00004019 - int(PAGE), 0x00002019 - int(PAGE), 0x00006019 - int(PAGE), |
||
38 | 0x0000001A - int(PAGE), 0x0000401A - int(PAGE), 0x0000201A - int(PAGE), 0x0000601A - int(PAGE), |
||
39 | 0x0000001B - int(PAGE), 0x0000401B - int(PAGE), 0x0000201B - int(PAGE), 0x0000601B - int(PAGE), |
||
40 | 0x0000001C - int(PAGE), 0x0000401C - int(PAGE), 0x0000201C - int(PAGE), 0x0000601C - int(PAGE), |
||
41 | 0x0000001D - int(PAGE), 0x0000401D - int(PAGE), 0x0000201D - int(PAGE), 0x0000601D - int(PAGE), |
||
42 | 0x0000001E - int(PAGE), 0x0000401E - int(PAGE), 0x0000201E - int(PAGE), 0x0000601E - int(PAGE), |
||
43 | 0x0000001F - int(PAGE), 0x0000401F - int(PAGE), 0x0000201F - int(PAGE), 0x0000601F - int(PAGE) |
||
44 | }; |
||
45 | |||
46 | #define p4bpp8_nf p4bpp8 |
||
47 | |||
48 | static int buf4bpp_shift = 0; |
||
49 | |||
50 | static void line_p4bpp_8(unsigned char *dst, unsigned char *src, unsigned *tab) |
||
51 | { |
||
52 | u8 *d = (u8 *)dst; |
||
53 | for (unsigned x = 0, i = 0; x < 256; x += 2, i++) |
||
54 | { |
||
55 | unsigned tmp = tab[src[p4bpp_ofs[(i+temp.offset_hscroll) & 0x7f]]]; |
||
56 | d[x] = u8(tmp); |
||
57 | d[x+1] = u8(tmp >> 16); |
||
58 | } |
||
59 | } |
||
60 | |||
61 | static void line_p4bpp_8d(unsigned char *dst, unsigned char *src, unsigned *tab) |
||
62 | { |
||
63 | for (unsigned x = 0; x < 128; x++) |
||
64 | { |
||
65 | *(unsigned*)(dst) = tab[src[p4bpp_ofs[(x+temp.offset_hscroll) & 0x7f]]]; |
||
66 | dst+=4; |
||
67 | } |
||
68 | } |
||
69 | |||
70 | static void line_p4bpp_8d_nf(unsigned char *dst, unsigned char *src1, unsigned char *src2, unsigned *tab) |
||
71 | { |
||
72 | for (unsigned x = 0; x < 128; x++) |
||
73 | { |
||
74 | *(unsigned*)(dst) = |
||
75 | (tab[src1[p4bpp_ofs[(x+temp.offset_hscroll ) & 0x7f]]] & 0x0F0F0F0F) + |
||
76 | (tab[src2[p4bpp_ofs[(x+temp.offset_hscroll_prev) & 0x7f]]] & 0xF0F0F0F0); |
||
77 | dst+=4; |
||
78 | } |
||
79 | } |
||
80 | |||
81 | static void line_p4bpp_16(unsigned char *dst, unsigned char *src, unsigned *tab) |
||
82 | { |
||
83 | u16 *d = (u16 *)dst; |
||
84 | for (unsigned x = 0, i = 0; x < 256; x +=2, i++) |
||
85 | { |
||
86 | unsigned tmp = 2*src[p4bpp_ofs[(i+temp.offset_hscroll) & 0x7f]]; |
||
87 | d[x] = u8(tab[0+tmp]); |
||
88 | d[x+1] = u8(tab[1+tmp]); |
||
89 | } |
||
90 | } |
||
91 | |||
92 | static void line_p4bpp_16d(unsigned char *dst, unsigned char *src, unsigned *tab) |
||
93 | { |
||
94 | unsigned tmp; |
||
95 | for (unsigned x = 0; x < 128; x++) |
||
96 | { |
||
97 | tmp = 2*src[p4bpp_ofs[(x+temp.offset_hscroll) & 0x7f]]; |
||
98 | *(unsigned*)dst = tab[0+tmp]; |
||
99 | dst+=4; |
||
100 | *(unsigned*)dst = tab[1+tmp]; |
||
101 | dst+=4; |
||
102 | } |
||
103 | } |
||
104 | |||
105 | static void line_p4bpp_16d_nf(unsigned char *dst, unsigned char *src1, unsigned char *src2, unsigned *tab) |
||
106 | { |
||
107 | unsigned tmp1; |
||
108 | unsigned tmp2; |
||
109 | for (unsigned x = 0; x < 128; x++) |
||
110 | { |
||
111 | tmp1 = unsigned(p4bpp_ofs[(x+temp.offset_hscroll ) & 0x7f]); |
||
112 | tmp2 = unsigned(p4bpp_ofs[(x+temp.offset_hscroll_prev) & 0x7f]); |
||
113 | *(unsigned*)dst = tab[0+2*src1[tmp1]] + tab[0+2*src2[tmp2]]; |
||
114 | dst+=4; |
||
115 | *(unsigned*)dst = tab[1+2*src1[tmp1]] + tab[1+2*src2[tmp2]]; |
||
116 | dst+=4; |
||
117 | } |
||
118 | } |
||
119 | |||
120 | static void line_p4bpp_32(unsigned char *dst, unsigned char *src, unsigned *tab) |
||
121 | { |
||
122 | u32 *d = (u32 *)dst; |
||
123 | for (unsigned x = 0, i = 0; x < 256; x += 2, i++) |
||
124 | { |
||
125 | unsigned tmp = 2*src[p4bpp_ofs[(i+temp.offset_hscroll) & 0x7f]]; |
||
126 | d[x] = tab[0+tmp]; |
||
127 | d[x+1] = tab[1+tmp]; |
||
128 | } |
||
129 | } |
||
130 | |||
131 | static void line_p4bpp_32d(unsigned char *dst, unsigned char *src, unsigned *tab) |
||
132 | { |
||
133 | unsigned tmp; |
||
134 | for (unsigned x = 0; x < 128; x++) |
||
135 | { |
||
136 | tmp = 2*src[p4bpp_ofs[(x+temp.offset_hscroll) & 0x7f]]; |
||
137 | *(unsigned*)dst = *(unsigned*)(dst+4) = tab[0+tmp]; |
||
138 | dst+=8; |
||
139 | *(unsigned*)dst = *(unsigned*)(dst+4) = tab[1+tmp]; |
||
140 | dst+=8; |
||
141 | } |
||
142 | } |
||
143 | |||
144 | static void line_p4bpp_32d_nf(unsigned char *dst, unsigned char *src1, unsigned char *src2, unsigned *tab) |
||
145 | { |
||
146 | unsigned tmp1; |
||
147 | unsigned tmp2; |
||
148 | for (unsigned x = 0; x < 128; x++) |
||
149 | { |
||
150 | tmp1 = unsigned(p4bpp_ofs[(x+temp.offset_hscroll ) & 0x7f]); |
||
151 | tmp2 = unsigned(p4bpp_ofs[(x+temp.offset_hscroll_prev) & 0x7f]); |
||
152 | *(unsigned*)dst = *(unsigned*)(dst+4) = tab[0+2*src1[tmp1]] + tab[0+2*src2[tmp2]]; |
||
153 | dst+=8; |
||
154 | *(unsigned*)dst = *(unsigned*)(dst+4) = tab[1+2*src1[tmp1]] + tab[1+2*src2[tmp2]]; |
||
155 | dst+=8; |
||
156 | } |
||
157 | } |
||
158 | |||
159 | static void r_p4bpp_8(unsigned char *dst, unsigned pitch) |
||
160 | { |
||
161 | for (unsigned y = 0; y < 192; y++) |
||
162 | { |
||
163 | unsigned char *src = temp.base + t.scrtab[(unsigned char)(y+temp.offset_vscroll)]; |
||
164 | line_p4bpp_8(dst, src, t.p4bpp8[0]); dst += pitch; |
||
165 | } |
||
166 | } |
||
167 | |||
168 | static void r_p4bpp_8d1(unsigned char *dst, unsigned pitch) |
||
169 | { |
||
170 | if (conf.noflic) |
||
171 | { |
||
172 | for (unsigned y = 0; y < 192; y++) |
||
173 | { |
||
174 | unsigned char *src1 = temp.base + t.scrtab[(unsigned char)(y+temp.offset_vscroll)]; |
||
175 | unsigned char *src2 = temp.base + buf4bpp_shift + t.scrtab[(unsigned char)(y+temp.offset_vscroll_prev)]; |
||
176 | line_p4bpp_8d_nf(dst, src1, src2, t.p4bpp8_nf[0]); dst += pitch; |
||
177 | } |
||
178 | |||
179 | } |
||
180 | else |
||
181 | { |
||
182 | for (unsigned y = 0; y < 192; y++) |
||
183 | { |
||
184 | unsigned char *src = temp.base + t.scrtab[(unsigned char)(y+temp.offset_vscroll)]; |
||
185 | line_p4bpp_8d(dst, src, t.p4bpp8[0]); dst += pitch; |
||
186 | } |
||
187 | } |
||
188 | } |
||
189 | |||
190 | static void r_p4bpp_8d(unsigned char *dst, unsigned pitch) |
||
191 | { |
||
192 | if (conf.noflic) |
||
193 | { |
||
194 | |||
195 | for (unsigned y = 0; y < 192; y++) |
||
196 | { |
||
197 | unsigned char *src1 = temp.base + t.scrtab[(unsigned char)(y+temp.offset_vscroll)]; |
||
198 | unsigned char *src2 = temp.base + buf4bpp_shift + t.scrtab[(unsigned char)(y+temp.offset_vscroll_prev)]; |
||
199 | line_p4bpp_8d_nf(dst, src1, src2, t.p4bpp8_nf[0]); dst += pitch; |
||
200 | line_p4bpp_8d_nf(dst, src1, src2, t.p4bpp8_nf[1]); dst += pitch; |
||
201 | } |
||
202 | |||
203 | } |
||
204 | else |
||
205 | { |
||
206 | |||
207 | for (unsigned y = 0; y < 192; y++) |
||
208 | { |
||
209 | unsigned char *src = temp.base + t.scrtab[(unsigned char)(y+temp.offset_vscroll)]; |
||
210 | line_p4bpp_8d(dst, src, t.p4bpp8[0]); dst += pitch; |
||
211 | line_p4bpp_8d(dst, src, t.p4bpp8[1]); dst += pitch; |
||
212 | } |
||
213 | |||
214 | } |
||
215 | } |
||
216 | |||
217 | static void r_p4bpp_16(unsigned char *dst, unsigned pitch) |
||
218 | { |
||
219 | for (unsigned y = 0; y < 192; y++) |
||
220 | { |
||
221 | unsigned char *src = temp.base + t.scrtab[(unsigned char)(y+temp.offset_vscroll)]; |
||
222 | line_p4bpp_16(dst, src, t.p4bpp16[0]); |
||
223 | dst += pitch; |
||
224 | } |
||
225 | } |
||
226 | |||
227 | static void r_p4bpp_16d1(unsigned char *dst, unsigned pitch) |
||
228 | { |
||
229 | if (conf.noflic) |
||
230 | { |
||
231 | for (unsigned y = 0; y < 192; y++) |
||
232 | { |
||
233 | unsigned char *src1 = temp.base + t.scrtab[(unsigned char)(y+temp.offset_vscroll)]; |
||
234 | unsigned char *src2 = temp.base + buf4bpp_shift + t.scrtab[(unsigned char)(y+temp.offset_vscroll_prev)]; |
||
235 | line_p4bpp_16d_nf(dst, src1, src2, t.p4bpp16_nf[0]); dst += pitch; |
||
236 | } |
||
237 | |||
238 | } |
||
239 | else |
||
240 | { |
||
241 | for (unsigned y = 0; y < 192; y++) |
||
242 | { |
||
243 | unsigned char *src = temp.base + t.scrtab[(unsigned char)(y+temp.offset_vscroll)]; |
||
244 | line_p4bpp_16d(dst, src, t.p4bpp16[0]); dst += pitch; |
||
245 | } |
||
246 | |||
247 | } |
||
248 | } |
||
249 | |||
250 | static void r_p4bpp_16d(unsigned char *dst, unsigned pitch) |
||
251 | { |
||
252 | if (conf.noflic) |
||
253 | { |
||
254 | for (unsigned y = 0; y < 192; y++) |
||
255 | { |
||
256 | unsigned char *src1 = temp.base + t.scrtab[(unsigned char)(y+temp.offset_vscroll)]; |
||
257 | unsigned char *src2 = temp.base + buf4bpp_shift + t.scrtab[(unsigned char)(y+temp.offset_vscroll_prev)]; |
||
258 | line_p4bpp_16d_nf(dst, src1, src2, t.p4bpp16_nf[0]); dst += pitch; |
||
259 | line_p4bpp_16d_nf(dst, src1, src2, t.p4bpp16_nf[1]); dst += pitch; |
||
260 | } |
||
261 | |||
262 | } |
||
263 | else |
||
264 | { |
||
265 | for (unsigned y = 0; y < 192; y++) |
||
266 | { |
||
267 | unsigned char *src = temp.base + t.scrtab[(unsigned char)(y+temp.offset_vscroll)]; |
||
268 | line_p4bpp_16d(dst, src, t.p4bpp16[0]); dst += pitch; |
||
269 | line_p4bpp_16d(dst, src, t.p4bpp16[1]); dst += pitch; |
||
270 | } |
||
271 | } |
||
272 | } |
||
273 | |||
274 | static void r_p4bpp_32(unsigned char *dst, unsigned pitch) |
||
275 | { |
||
276 | for (unsigned y = 0; y < 192; y++) |
||
277 | { |
||
278 | unsigned char *src = temp.base + t.scrtab[(unsigned char)(y+temp.offset_vscroll)]; |
||
279 | line_p4bpp_32(dst, src, t.p4bpp32[0]); |
||
280 | dst += pitch; |
||
281 | } |
||
282 | } |
||
283 | |||
284 | static void r_p4bpp_32d1(unsigned char *dst, unsigned pitch) |
||
285 | { |
||
286 | if (conf.noflic) |
||
287 | { |
||
288 | for (unsigned y = 0; y < 192; y++) |
||
289 | { |
||
290 | unsigned char *src1 = temp.base + t.scrtab[(unsigned char)(y+temp.offset_vscroll)]; |
||
291 | unsigned char *src2 = temp.base + buf4bpp_shift + t.scrtab[(unsigned char)(y+temp.offset_vscroll_prev)]; |
||
292 | line_p4bpp_32d_nf(dst, src1, src2, t.p4bpp32_nf[0]); dst += pitch; |
||
293 | } |
||
294 | |||
295 | } |
||
296 | else |
||
297 | { |
||
298 | for (unsigned y = 0; y < 192; y++) |
||
299 | { |
||
300 | unsigned char *src = temp.base + t.scrtab[(unsigned char)(y+temp.offset_vscroll)]; |
||
301 | line_p4bpp_32d(dst, src, t.p4bpp32[0]); dst += pitch; |
||
302 | } |
||
303 | } |
||
304 | } |
||
305 | |||
306 | static void r_p4bpp_32d(unsigned char *dst, unsigned pitch) |
||
307 | { |
||
308 | if (conf.noflic) |
||
309 | { |
||
310 | for (unsigned y = 0; y < 192; y++) |
||
311 | { |
||
312 | unsigned char *src1 = temp.base + t.scrtab[(unsigned char)(y+temp.offset_vscroll)]; |
||
313 | unsigned char *src2 = temp.base + buf4bpp_shift + t.scrtab[(unsigned char)(y+temp.offset_vscroll_prev)]; |
||
314 | line_p4bpp_32d_nf(dst, src1, src2, t.p4bpp32_nf[0]); dst += pitch; |
||
315 | line_p4bpp_32d_nf(dst, src1, src2, t.p4bpp32_nf[1]); dst += pitch; |
||
316 | } |
||
317 | } |
||
318 | else |
||
319 | { |
||
320 | for (unsigned y = 0; y < 192; y++) |
||
321 | { |
||
322 | unsigned char *src = temp.base + t.scrtab[(unsigned char)(y+temp.offset_vscroll)]; |
||
323 | line_p4bpp_32d(dst, src, t.p4bpp32[0]); dst += pitch; |
||
324 | line_p4bpp_32d(dst, src, t.p4bpp32[1]); dst += pitch; |
||
325 | } |
||
326 | } |
||
327 | } |
||
328 | |||
329 | void rend_p4bpp_small(unsigned char *dst, unsigned pitch) |
||
330 | { |
||
331 | unsigned char *dst2 = dst + (temp.ox-256)*temp.obpp/16; |
||
332 | dst2 += temp.b_top * pitch * ((temp.oy > temp.scy)?2:1); |
||
333 | |||
334 | if (temp.oy > temp.scy && conf.fast_sl) |
||
335 | pitch *= 2; |
||
336 | |||
337 | if (conf.noflic) |
||
338 | buf4bpp_shift = int((rbuf_s+PAGE) - temp.base); |
||
339 | |||
340 | if (temp.obpp == 8) |
||
341 | { |
||
342 | rend_frame8(dst, pitch); |
||
343 | r_p4bpp_8(dst2, pitch); |
||
344 | } |
||
345 | if (temp.obpp == 16) |
||
346 | { |
||
347 | rend_frame16(dst, pitch); |
||
348 | r_p4bpp_16(dst2, pitch); |
||
349 | } |
||
350 | if (temp.obpp == 32) |
||
351 | { |
||
352 | rend_frame32(dst, pitch); |
||
353 | r_p4bpp_32(dst2, pitch); |
||
354 | } |
||
355 | |||
356 | if (conf.noflic) |
||
357 | memcpy(rbuf_s, temp.base-PAGE, 2*PAGE); |
||
358 | |||
359 | temp.offset_vscroll_prev = temp.offset_vscroll; |
||
360 | temp.offset_vscroll = 0; |
||
361 | temp.offset_hscroll_prev = temp.offset_hscroll; |
||
362 | temp.offset_hscroll = 0; |
||
363 | } |
||
364 | |||
365 | void rend_p4bpp(unsigned char *dst, unsigned pitch) |
||
366 | { |
||
367 | unsigned char *dst2 = dst + (temp.ox-512)*temp.obpp/16; |
||
368 | dst2 += temp.b_top * pitch * ((temp.oy > temp.scy)?2:1); |
||
369 | |||
370 | if (temp.oy > temp.scy && conf.fast_sl) pitch *= 2; |
||
371 | |||
372 | if (conf.noflic) |
||
373 | buf4bpp_shift = int((rbuf_s+PAGE) - temp.base); |
||
374 | |||
375 | if (temp.obpp == 8) |
||
376 | { |
||
377 | if (conf.fast_sl) |
||
378 | { |
||
379 | rend_frame_8d1(dst, pitch); |
||
380 | r_p4bpp_8d1(dst2, pitch); |
||
381 | } |
||
382 | else |
||
383 | { |
||
384 | rend_frame_8d(dst, pitch); |
||
385 | r_p4bpp_8d(dst2, pitch); |
||
386 | } |
||
387 | } |
||
388 | if (temp.obpp == 16) |
||
389 | { |
||
390 | if (conf.fast_sl) |
||
391 | { |
||
392 | rend_frame_16d1(dst, pitch); |
||
393 | r_p4bpp_16d1(dst2, pitch); |
||
394 | } |
||
395 | else |
||
396 | { |
||
397 | rend_frame_16d(dst, pitch); |
||
398 | r_p4bpp_16d(dst2, pitch); |
||
399 | } |
||
400 | } |
||
401 | if (temp.obpp == 32) |
||
402 | { |
||
403 | if (conf.fast_sl) |
||
404 | { |
||
405 | rend_frame_32d1(dst, pitch); |
||
406 | r_p4bpp_32d1(dst2, pitch); |
||
407 | } |
||
408 | else |
||
409 | { |
||
410 | rend_frame_32d(dst, pitch); |
||
411 | r_p4bpp_32d(dst2, pitch); |
||
412 | } |
||
413 | } |
||
414 | |||
415 | if (conf.noflic) |
||
416 | memcpy(rbuf_s, temp.base-PAGE, 2*PAGE); |
||
417 | |||
418 | temp.offset_vscroll_prev = temp.offset_vscroll; |
||
419 | temp.offset_vscroll = 0; |
||
420 | temp.offset_hscroll_prev = temp.offset_hscroll; |
||
421 | temp.offset_hscroll = 0; |
||
422 | } |