diff options
author | Karl Kurbjun <kkurbjun@gmail.com> | 2009-06-13 20:59:03 +0000 |
---|---|---|
committer | Karl Kurbjun <kkurbjun@gmail.com> | 2009-06-13 20:59:03 +0000 |
commit | 4d41886caaefeccb08ed6eeccfffea15bad9c2a6 (patch) | |
tree | 7ee5071dac2dfdae5c576d6b87d87d559c5365be /firmware/target | |
parent | 414f6c558b27ab6deb03d4dd49e040c75f298d46 (diff) | |
download | rockbox-4d41886caaefeccb08ed6eeccfffea15bad9c2a6.tar.gz rockbox-4d41886caaefeccb08ed6eeccfffea15bad9c2a6.zip |
M:Robe 500: Fix up 256 color blitting when in portrait mode, fix a mistake in the plugin linker script, reduce the amount of memory used by overwriting IRAM with bss after program has started, clean up some tabs and formatting, resize the simulator when building for 640x480
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21280 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target')
-rw-r--r-- | firmware/target/arm/tms320dm320/app.lds | 14 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c | 213 |
2 files changed, 109 insertions, 118 deletions
diff --git a/firmware/target/arm/tms320dm320/app.lds b/firmware/target/arm/tms320dm320/app.lds index 14b44153a6..2c74278142 100644 --- a/firmware/target/arm/tms320dm320/app.lds +++ b/firmware/target/arm/tms320dm320/app.lds | |||
@@ -118,44 +118,38 @@ SECTIONS | |||
118 | stackend = .; | 118 | stackend = .; |
119 | } > IRAM | 119 | } > IRAM |
120 | 120 | ||
121 | /* This could probably be shortened so that the audio buffer overwrites | 121 | /* This overwrites the iram (in ram), so make sure that the iram is copied |
122 | * at the IRAM stuff (assuming that it is copied first in crt0.S), but | 122 | * out in crt0.s before the bss section and the rest are used. |
123 | * leave it for now since the space is not critical at the moment. | ||
124 | */ | 123 | */ |
125 | .bss (NOLOAD) : | 124 | .bss (NOLOAD) : |
126 | { | 125 | { |
127 | . = ADDR(.data) + SIZEOF(.data) + SIZEOF(.vectors) + SIZEOF(.iram); | 126 | . = ADDR(.data) + SIZEOF(.data); |
128 | _edata = .; | 127 | _edata = .; |
129 | *(.bss*) | 128 | *(.bss*) |
130 | *(COMMON) | 129 | *(COMMON) |
131 | . = ALIGN(0x4); | 130 | . = ALIGN(0x4); |
132 | _end = .; | 131 | _end = .; |
133 | } > DRAM | 132 | } > DRAM |
134 | |||
135 | 133 | ||
136 | .audiobuf (NOLOAD) : | 134 | .audiobuf (NOLOAD) : |
137 | { | 135 | { |
138 | . = ALIGN(4); | 136 | . = ALIGN(4); |
139 | _audiobuffer = .; | ||
140 | audiobuffer = .; | 137 | audiobuffer = .; |
141 | } > DRAM | 138 | } > DRAM |
142 | 139 | ||
143 | .audiobufend ENDAUDIOADDR (NOLOAD) : | 140 | .audiobufend ENDAUDIOADDR (NOLOAD) : |
144 | { | 141 | { |
145 | audiobufend = .; | 142 | audiobufend = .; |
146 | _audiobufend = .; | ||
147 | } > DRAM | 143 | } > DRAM |
148 | 144 | ||
149 | .codec ENDAUDIOADDR (NOLOAD) : | 145 | .codec ENDAUDIOADDR (NOLOAD) : |
150 | { | 146 | { |
151 | codecbuf = .; | 147 | codecbuf = .; |
152 | _codecbuf = .; | ||
153 | . += CODEC_SIZE; | 148 | . += CODEC_SIZE; |
154 | } > DRAM | 149 | } > DRAM |
155 | 150 | ||
156 | .plugin (NOLOAD) : | 151 | .plugin (NOLOAD) : |
157 | { | 152 | { |
158 | _pluginbuf = .; | ||
159 | pluginbuf = .; | 153 | pluginbuf = .; |
160 | . += PLUGIN_BUFFER_SIZE; | 154 | . += PLUGIN_BUFFER_SIZE; |
161 | } > DRAM | 155 | } > DRAM |
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c index 97945397b2..a44a482324 100644 --- a/firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c +++ b/firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c | |||
@@ -63,10 +63,8 @@ void lcd_sleep() | |||
63 | memset16(FRAME, 0xFFFF, LCD_WIDTH*LCD_HEIGHT); | 63 | memset16(FRAME, 0xFFFF, LCD_WIDTH*LCD_HEIGHT); |
64 | sleep(HZ/5); | 64 | sleep(HZ/5); |
65 | /* Disabling these saves another ~15mA */ | 65 | /* Disabling these saves another ~15mA */ |
66 | IO_OSD_OSDWINMD0&= ~(0x01); | 66 | IO_OSD_OSDWINMD0 &= ~(0x01); |
67 | IO_VID_ENC_VMOD &= ~(0x01); | 67 | IO_VID_ENC_VMOD &= ~(0x01); |
68 | |||
69 | // IO_CLK_MOD1 &= ~(0x0018); | ||
70 | 68 | ||
71 | /* Disabling the LCD saves ~50mA */ | 69 | /* Disabling the LCD saves ~50mA */ |
72 | IO_GIO_BITCLR2=1<<4; | 70 | IO_GIO_BITCLR2=1<<4; |
@@ -79,13 +77,11 @@ void lcd_awake(void) | |||
79 | if (!lcd_on) | 77 | if (!lcd_on) |
80 | { | 78 | { |
81 | lcd_on=true; | 79 | lcd_on=true; |
82 | 80 | IO_OSD_OSDWINMD0 |= 0x01; | |
83 | // IO_CLK_MOD1 |= 0x0018; | 81 | IO_VID_ENC_VMOD |= 0x01; |
84 | IO_OSD_OSDWINMD0|= 0x01; | ||
85 | IO_VID_ENC_VMOD |= 0x01; | ||
86 | 82 | ||
87 | sleep(2); | 83 | sleep(2); |
88 | IO_GIO_BITSET2=1<<4; | 84 | IO_GIO_BITSET2 = 1<<4; |
89 | 85 | ||
90 | lcd_update(); | 86 | lcd_update(); |
91 | 87 | ||
@@ -113,121 +109,121 @@ void lcd_init_device(void) | |||
113 | /* Clear the Frame */ | 109 | /* Clear the Frame */ |
114 | memset16(FRAME, 0x0000, LCD_WIDTH*LCD_HEIGHT); | 110 | memset16(FRAME, 0x0000, LCD_WIDTH*LCD_HEIGHT); |
115 | 111 | ||
116 | IO_OSD_OSDWINMD0&=~(0x0001); | 112 | IO_OSD_OSDWINMD0 &= ~(0x0001); |
117 | IO_OSD_VIDWINMD&=~(0x0001); | 113 | IO_OSD_VIDWINMD &= ~(0x0001); |
118 | 114 | ||
119 | /* Setup the LCD controller */ | 115 | /* Setup the LCD controller */ |
120 | IO_VID_ENC_VMOD=0x2014; | 116 | IO_VID_ENC_VMOD = 0x2014; |
121 | IO_VID_ENC_VDCTL=0x2000; | 117 | IO_VID_ENC_VDCTL = 0x2000; |
122 | IO_VID_ENC_VDPRO=0x0000; | 118 | IO_VID_ENC_VDPRO = 0x0000; |
123 | IO_VID_ENC_SYNCTL=0x100E; | 119 | IO_VID_ENC_SYNCTL = 0x100E; |
124 | IO_VID_ENC_HSPLS=1; /* HSYNC pulse width */ | 120 | IO_VID_ENC_HSPLS = 1; /* HSYNC pulse width */ |
125 | IO_VID_ENC_VSPLS=1; /* VSYNC pulse width */ | 121 | IO_VID_ENC_VSPLS = 1; /* VSYNC pulse width */ |
126 | 122 | ||
127 | /* These calculations support 640x480 and 320x240 (based on OF) */ | 123 | /* These calculations support 640x480 and 320x240 (based on OF) */ |
128 | IO_VID_ENC_HINT=LCD_NATIVE_WIDTH+LCD_NATIVE_WIDTH/3; | 124 | IO_VID_ENC_HINT = LCD_NATIVE_WIDTH+LCD_NATIVE_WIDTH/3; |
129 | IO_VID_ENC_HSTART=LCD_NATIVE_WIDTH/6; /* Front porch */ | 125 | IO_VID_ENC_HSTART = LCD_NATIVE_WIDTH/6; /* Back porch */ |
130 | IO_VID_ENC_HVALID=LCD_NATIVE_WIDTH; /* Data valid */ | 126 | IO_VID_ENC_HVALID = LCD_NATIVE_WIDTH; /* Data valid */ |
131 | IO_VID_ENC_VINT=LCD_NATIVE_HEIGHT+7; | 127 | IO_VID_ENC_VINT = LCD_NATIVE_HEIGHT+8; |
132 | IO_VID_ENC_VSTART=3; | 128 | IO_VID_ENC_VSTART = 2; |
133 | IO_VID_ENC_VVALID=LCD_NATIVE_HEIGHT; | 129 | IO_VID_ENC_VVALID = LCD_NATIVE_HEIGHT; |
134 | 130 | ||
135 | IO_VID_ENC_HSDLY=0x0000; | 131 | IO_VID_ENC_HSDLY = 0x0000; |
136 | IO_VID_ENC_VSDLY=0x0000; | 132 | IO_VID_ENC_VSDLY = 0x0000; |
137 | IO_VID_ENC_YCCTL=0x0000; | 133 | IO_VID_ENC_YCCTL = 0x0000; |
138 | IO_VID_ENC_RGBCTL=0x0000; | 134 | IO_VID_ENC_RGBCTL = 0x0000; |
139 | IO_VID_ENC_RGBCLP=0xFF00; | 135 | IO_VID_ENC_RGBCLP = 0xFF00; |
140 | IO_VID_ENC_LNECTL=0x0000; | 136 | IO_VID_ENC_LNECTL = 0x0000; |
141 | IO_VID_ENC_CULLLNE=0x0000; | 137 | IO_VID_ENC_CULLLNE = 0x0000; |
142 | IO_VID_ENC_LCDOUT=0x0000; | 138 | IO_VID_ENC_LCDOUT = 0x0000; |
143 | IO_VID_ENC_BRTS=0x0000; | 139 | IO_VID_ENC_BRTS = 0x0000; |
144 | IO_VID_ENC_BRTW=0x0000; | 140 | IO_VID_ENC_BRTW = 0x0000; |
145 | IO_VID_ENC_ACCTL=0x0000; | 141 | IO_VID_ENC_ACCTL = 0x0000; |
146 | IO_VID_ENC_PWMP=0x0000; | 142 | IO_VID_ENC_PWMP = 0x0000; |
147 | IO_VID_ENC_PWMW=0x0000; | 143 | IO_VID_ENC_PWMW = 0x0000; |
148 | 144 | ||
149 | IO_VID_ENC_DCLKPTN0=0x0001; | 145 | IO_VID_ENC_DCLKPTN0 = 0x0001; |
150 | 146 | ||
151 | /* Setup the display */ | 147 | /* Setup the display */ |
152 | IO_OSD_MODE=0x00ff; | 148 | IO_OSD_MODE = 0x00ff; |
153 | 149 | ||
154 | IO_OSD_ATRMD=0x0000; | 150 | IO_OSD_ATRMD = 0x0000; |
155 | IO_OSD_RECTCUR=0x0000; | 151 | IO_OSD_RECTCUR = 0x0000; |
156 | 152 | ||
157 | IO_OSD_BASEPX=IO_VID_ENC_HSTART; | 153 | IO_OSD_BASEPX = IO_VID_ENC_HSTART; |
158 | IO_OSD_BASEPY=IO_VID_ENC_VSTART; | 154 | IO_OSD_BASEPY = IO_VID_ENC_VSTART; |
159 | 155 | ||
160 | addr = ((int)FRAME-CONFIG_SDRAM_START) / 32; | 156 | addr = ((int)FRAME-CONFIG_SDRAM_START) / 32; |
161 | 157 | ||
162 | /* Setup the OSD windows */ | 158 | /* Setup the OSD windows */ |
163 | 159 | ||
164 | /* Used for 565 RGB */ | 160 | /* Used for 565 RGB */ |
165 | IO_OSD_OSDWINMD0=0x30C0; | 161 | IO_OSD_OSDWINMD0 = 0x30C0; |
166 | 162 | ||
167 | IO_OSD_OSDWIN0OFST=LCD_NATIVE_WIDTH / 16; | 163 | IO_OSD_OSDWIN0OFST = LCD_NATIVE_WIDTH / 16; |
168 | 164 | ||
169 | IO_OSD_OSDWINADH=addr >> 16; | 165 | IO_OSD_OSDWINADH = addr >> 16; |
170 | IO_OSD_OSDWIN0ADL=addr & 0xFFFF; | 166 | IO_OSD_OSDWIN0ADL = addr & 0xFFFF; |
171 | 167 | ||
172 | IO_OSD_OSDWIN0XP=0; | 168 | IO_OSD_OSDWIN0XP = 0; |
173 | IO_OSD_OSDWIN0YP=0; | 169 | IO_OSD_OSDWIN0YP = 0; |
174 | 170 | ||
175 | /* read from OF */ | 171 | /* read from OF */ |
176 | IO_OSD_OSDWIN0XL=LCD_NATIVE_WIDTH; | 172 | IO_OSD_OSDWIN0XL = LCD_NATIVE_WIDTH; |
177 | IO_OSD_OSDWIN0YL=LCD_NATIVE_HEIGHT; | 173 | IO_OSD_OSDWIN0YL = LCD_NATIVE_HEIGHT; |
178 | 174 | ||
179 | /* Unused */ | 175 | /* Unused */ |
180 | IO_OSD_OSDWINMD1=0x10C0; | 176 | IO_OSD_OSDWINMD1 = 0x10C0; |
181 | 177 | ||
182 | #if LCD_NATIVE_WIDTH%32!=0 | 178 | #if LCD_NATIVE_WIDTH%32!=0 |
183 | IO_OSD_OSDWIN1OFST=LCD_NATIVE_WIDTH / 32+1; | 179 | IO_OSD_OSDWIN1OFST = LCD_NATIVE_WIDTH / 32+1; |
184 | #else | 180 | #else |
185 | IO_OSD_OSDWIN1OFST=LCD_NATIVE_WIDTH / 32; | 181 | IO_OSD_OSDWIN1OFST = LCD_NATIVE_WIDTH / 32; |
186 | #endif | 182 | #endif |
187 | 183 | ||
188 | IO_OSD_OSDWIN1ADL=addr & 0xFFFF; | 184 | IO_OSD_OSDWIN1ADL = addr & 0xFFFF; |
189 | 185 | ||
190 | IO_OSD_OSDWIN1XP=0; | 186 | IO_OSD_OSDWIN1XP = 0; |
191 | IO_OSD_OSDWIN1YP=0; | 187 | IO_OSD_OSDWIN1YP = 0; |
192 | 188 | ||
193 | IO_OSD_OSDWIN1XL=LCD_NATIVE_WIDTH; | 189 | IO_OSD_OSDWIN1XL = LCD_NATIVE_WIDTH; |
194 | IO_OSD_OSDWIN1YL=LCD_NATIVE_HEIGHT; | 190 | IO_OSD_OSDWIN1YL = LCD_NATIVE_HEIGHT; |
195 | 191 | ||
196 | IO_OSD_VIDWINMD=0x0002; | 192 | IO_OSD_VIDWINMD = 0x0002; |
197 | 193 | ||
198 | addr = ((int)FRAME2-CONFIG_SDRAM_START) / 32; | 194 | addr = ((int)FRAME2-CONFIG_SDRAM_START) / 32; |
199 | 195 | ||
200 | /* This is a bit messy, the LCD transfers appear to happen in chunks of 32 | 196 | /* This is a bit messy, the LCD transfers appear to happen in chunks of 32 |
201 | * pixels. (based on OF) | 197 | * pixels. (based on OF) |
202 | */ | 198 | */ |
203 | #if LCD_NATIVE_WIDTH%32!=0 | 199 | #if LCD_NATIVE_WIDTH%32!=0 |
204 | IO_OSD_VIDWIN0OFST=LCD_NATIVE_WIDTH / 32+1; | 200 | IO_OSD_VIDWIN0OFST = LCD_NATIVE_WIDTH / 32+1; |
205 | #else | 201 | #else |
206 | IO_OSD_VIDWIN0OFST=LCD_NATIVE_WIDTH / 32; | 202 | IO_OSD_VIDWIN0OFST = LCD_NATIVE_WIDTH / 32; |
207 | #endif | 203 | #endif |
208 | 204 | ||
209 | IO_OSD_VIDWINADH=addr >> 16; | 205 | IO_OSD_VIDWINADH = addr >> 16; |
210 | IO_OSD_VIDWIN0ADL=addr & 0xFFFF; | 206 | IO_OSD_VIDWIN0ADL = addr & 0xFFFF; |
211 | 207 | ||
212 | IO_OSD_VIDWIN0XP=0; | 208 | IO_OSD_VIDWIN0XP = 0; |
213 | IO_OSD_VIDWIN0YP=0; | 209 | IO_OSD_VIDWIN0YP = 0; |
214 | 210 | ||
215 | IO_OSD_VIDWIN0XL=LCD_NATIVE_WIDTH; | 211 | IO_OSD_VIDWIN0XL = LCD_NATIVE_WIDTH; |
216 | IO_OSD_VIDWIN0YL=LCD_NATIVE_HEIGHT; | 212 | IO_OSD_VIDWIN0YL = LCD_NATIVE_HEIGHT; |
217 | 213 | ||
218 | /* Set pin 36 and 35 (LCD POWER and LCD RESOLUTION) to an output */ | 214 | /* Set pin 36 and 35 (LCD POWER and LCD RESOLUTION) to an output */ |
219 | IO_GIO_DIR2&=!(3<<3); | 215 | IO_GIO_DIR2 &= ~(3<<3); |
220 | 216 | ||
221 | #if LCD_NATIVE_HEIGHT > 320 | 217 | #if LCD_NATIVE_HEIGHT > 320 |
222 | /* Set LCD resolution to VGA */ | 218 | /* Set LCD resolution to VGA */ |
223 | IO_GIO_BITSET2=1<<3; | 219 | IO_GIO_BITSET2 = 1<<3; |
224 | #else | 220 | #else |
225 | /* Set LCD resolution to QVGA */ | 221 | /* Set LCD resolution to QVGA */ |
226 | IO_GIO_BITCLR2=1<<3; | 222 | IO_GIO_BITCLR2 = 1<<3; |
227 | #endif | 223 | #endif |
228 | 224 | ||
229 | IO_OSD_OSDWINMD0|=0x01; | 225 | IO_OSD_OSDWINMD0 |= 0x01; |
230 | IO_VID_ENC_VMOD|=0x01; | 226 | IO_VID_ENC_VMOD |= 0x01; |
231 | } | 227 | } |
232 | 228 | ||
233 | #if defined(HAVE_LCD_MODES) | 229 | #if defined(HAVE_LCD_MODES) |
@@ -236,30 +232,30 @@ void lcd_set_mode(int mode) | |||
236 | if(mode==LCD_MODE_YUV) | 232 | if(mode==LCD_MODE_YUV) |
237 | { | 233 | { |
238 | /* Turn off the RGB buffer and enable the YUV buffer */ | 234 | /* Turn off the RGB buffer and enable the YUV buffer */ |
239 | IO_OSD_OSDWINMD0 |=0x04; | 235 | IO_OSD_OSDWINMD0 |= 0x04; |
240 | IO_OSD_VIDWINMD |=0x01; | 236 | IO_OSD_VIDWINMD |= 0x01; |
241 | memset16(FRAME2, 0x0080, LCD_NATIVE_HEIGHT*(LCD_NATIVE_WIDTH+LCD_FUDGE)); | 237 | memset16(FRAME2, 0x0080, LCD_NATIVE_HEIGHT*(LCD_NATIVE_WIDTH+LCD_FUDGE)); |
242 | } | 238 | } |
243 | else if(mode==LCD_MODE_RGB565) | 239 | else if(mode==LCD_MODE_RGB565) |
244 | { | 240 | { |
245 | /* Turn on the RGB window, set it to 16 bit and turn YUV window off */ | 241 | /* Turn on the RGB window, set it to 16 bit and turn YUV window off */ |
246 | IO_OSD_VIDWINMD &=~(0x01); | 242 | IO_OSD_VIDWINMD &= ~(0x01); |
247 | IO_OSD_OSDWIN0OFST=LCD_NATIVE_WIDTH / 16; | 243 | IO_OSD_OSDWIN0OFST = LCD_NATIVE_WIDTH / 16; |
248 | IO_OSD_OSDWINMD0 |=(1<<13); | 244 | IO_OSD_OSDWINMD0 |= (1<<13); |
249 | IO_OSD_OSDWINMD0 &=~0x04; | 245 | IO_OSD_OSDWINMD0 &= ~0x04; |
250 | lcd_clear_display(); | 246 | lcd_clear_display(); |
251 | } | 247 | } |
252 | else if(mode==LCD_MODE_PAL256) | 248 | else if(mode==LCD_MODE_PAL256) |
253 | { | 249 | { |
254 | #if LCD_NATIVE_WIDTH%32!=0 | 250 | #if LCD_NATIVE_WIDTH%32!=0 |
255 | IO_OSD_OSDWIN0OFST=LCD_NATIVE_WIDTH / 32+1; | 251 | IO_OSD_OSDWIN0OFST = LCD_NATIVE_WIDTH / 32+1; |
256 | #else | 252 | #else |
257 | IO_OSD_OSDWIN0OFST=LCD_NATIVE_WIDTH / 32; | 253 | IO_OSD_OSDWIN0OFST = LCD_NATIVE_WIDTH / 32; |
258 | #endif | 254 | #endif |
259 | 255 | ||
260 | IO_OSD_VIDWINMD &=~(0x01); | 256 | IO_OSD_VIDWINMD &= ~(0x01); |
261 | IO_OSD_OSDWINMD0 &=~(1<<13); | 257 | IO_OSD_OSDWINMD0 &= ~(1<<13); |
262 | IO_OSD_OSDWINMD0 |=0x01; | 258 | IO_OSD_OSDWINMD0 |= 0x01; |
263 | } | 259 | } |
264 | } | 260 | } |
265 | #endif | 261 | #endif |
@@ -346,35 +342,36 @@ void lcd_blit_pal256(unsigned char *src, int src_x, int src_y, int x, int y, | |||
346 | #if CONFIG_ORIENTATION == SCREEN_PORTRAIT | 342 | #if CONFIG_ORIENTATION == SCREEN_PORTRAIT |
347 | char *dst=(char *)FRAME+x+y*(LCD_NATIVE_WIDTH+LCD_FUDGE); | 343 | char *dst=(char *)FRAME+x+y*(LCD_NATIVE_WIDTH+LCD_FUDGE); |
348 | 344 | ||
349 | src=src+src_x+src_y*LCD_NATIVE_WIDTH; | 345 | src = src+src_x+src_y*LCD_WIDTH; |
350 | while(height--); | 346 | while(height--) |
351 | { | 347 | { |
352 | memcpy ( dst, src, width); | 348 | memcpy(dst, src, width); |
353 | 349 | ||
354 | dst=dst+(LCD_NATIVE_WIDTH-x+LCD_FUDGE); | 350 | dst = dst + ((LCD_WIDTH -x +LCD_FUDGE)); |
355 | src+=width; | 351 | src = src + (LCD_WIDTH - x); |
356 | } | 352 | } |
357 | 353 | ||
358 | #else | 354 | #else |
359 | char *dst=(char *)FRAME | 355 | char *dst=(char *)FRAME |
360 | + (LCD_NATIVE_WIDTH+LCD_FUDGE)*(LCD_NATIVE_HEIGHT-1) | 356 | + (LCD_NATIVE_WIDTH+LCD_FUDGE)*(LCD_NATIVE_HEIGHT-1) |
361 | - (LCD_NATIVE_WIDTH+LCD_FUDGE)*x + y; | 357 | - (LCD_NATIVE_WIDTH+LCD_FUDGE)*x + y; |
362 | 358 | ||
363 | src=src+src_x+src_y*LCD_WIDTH; | 359 | src=src+src_x+src_y*LCD_WIDTH; |
364 | while(height--) | 360 | |
365 | { | 361 | while(height--) |
366 | register char *c_dst=dst; | 362 | { |
367 | register int c_width=width; | 363 | register char *c_dst=dst; |
368 | 364 | register int c_width=width; | |
369 | while (c_width--) | 365 | |
370 | { | 366 | while (c_width--) |
371 | *c_dst=*src++; | 367 | { |
372 | c_dst=c_dst-(LCD_NATIVE_WIDTH+LCD_FUDGE); | 368 | *c_dst = *src++; |
373 | } | 369 | c_dst -= (LCD_NATIVE_WIDTH+LCD_FUDGE); |
374 | 370 | } | |
375 | dst++; | 371 | |
376 | src+=LCD_WIDTH-width; | 372 | dst++; |
377 | } | 373 | src+=LCD_WIDTH-width; |
374 | } | ||
378 | #endif | 375 | #endif |
379 | } | 376 | } |
380 | 377 | ||