diff options
author | Kjell Ericson <kjell@haxx.se> | 2003-01-10 11:07:14 +0000 |
---|---|---|
committer | Kjell Ericson <kjell@haxx.se> | 2003-01-10 11:07:14 +0000 |
commit | 602c049b39ce7f881e5c13b76d5419b106c50c86 (patch) | |
tree | e8f60dad737e7e2a674f47a5c3c618bbe0df1cb3 /www/docs | |
parent | 3639325a2b04c4b2a4fe25b0ce2fc4a099d0c389 (diff) |
Description of how Rocklatin works and looks like.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3060 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'www/docs')
-rw-r--r-- | www/docs/index.t | 1 | ||||
-rw-r--r-- | www/docs/lcd_new.gif | bin | 0 -> 43437 bytes | |||
-rw-r--r-- | www/docs/lcd_new_hw.gif | bin | 0 -> 41878 bytes | |||
-rw-r--r-- | www/docs/lcd_new_subst.gif | bin | 0 -> 43437 bytes | |||
-rw-r--r-- | www/docs/lcd_old.gif | bin | 0 -> 43437 bytes | |||
-rw-r--r-- | www/docs/lcd_old_hw.gif | bin | 0 -> 41878 bytes | |||
-rw-r--r-- | www/docs/lcd_old_subst.gif | bin | 0 -> 43437 bytes | |||
-rw-r--r-- | www/docs/rocklatin.t | 97 |
8 files changed, 98 insertions, 0 deletions
diff --git a/www/docs/index.t b/www/docs/index.t index e2a7d96628..8205142514 100644 --- a/www/docs/index.t +++ b/www/docs/index.t @@ -20,6 +20,7 @@ <li><a href="/sh-win/">Setting up the cross compiler for Windows</a> <li><a href="how_to_compile.html">How to compile Rockbox</a> (README from cvs) <li><a href="mpeghdr.html">MPEG frame header info</a> +<li><a href="rocklatin.htm">Rocklatin charset in Player</a> </ul> #include "foot.t" diff --git a/www/docs/lcd_new.gif b/www/docs/lcd_new.gif Binary files differnew file mode 100644 index 0000000000..e305a33498 --- /dev/null +++ b/www/docs/lcd_new.gif diff --git a/www/docs/lcd_new_hw.gif b/www/docs/lcd_new_hw.gif Binary files differnew file mode 100644 index 0000000000..87930d3d65 --- /dev/null +++ b/www/docs/lcd_new_hw.gif diff --git a/www/docs/lcd_new_subst.gif b/www/docs/lcd_new_subst.gif Binary files differnew file mode 100644 index 0000000000..f5e8297ce6 --- /dev/null +++ b/www/docs/lcd_new_subst.gif diff --git a/www/docs/lcd_old.gif b/www/docs/lcd_old.gif Binary files differnew file mode 100644 index 0000000000..558b290066 --- /dev/null +++ b/www/docs/lcd_old.gif diff --git a/www/docs/lcd_old_hw.gif b/www/docs/lcd_old_hw.gif Binary files differnew file mode 100644 index 0000000000..19f35f6711 --- /dev/null +++ b/www/docs/lcd_old_hw.gif diff --git a/www/docs/lcd_old_subst.gif b/www/docs/lcd_old_subst.gif Binary files differnew file mode 100644 index 0000000000..45eb5a6206 --- /dev/null +++ b/www/docs/lcd_old_subst.gif diff --git a/www/docs/rocklatin.t b/www/docs/rocklatin.t new file mode 100644 index 0000000000..e44d154ff9 --- /dev/null +++ b/www/docs/rocklatin.t @@ -0,0 +1,97 @@ +#define _PAGE_ Rocklatin +#include "head.t" + +<h1>Rocklatin1</h1> + +Only for developers... + +<h2>Background</h2> +The Archos player comes in two models. One with old LCD and one with new LCD. +(Differences can be seen below). You can't find any difference more than the +LCD, therefor we run the same code on both models. The original software +contains two different mappings from ASCII-character to hardware-LCD. Because +some characters doesn't exist in both hardwares all national characters +are left out in both hardware. +<p>The old LCD can have 4 software defined characters, and the new LCD can +have 8 software defined characters. +<table border=1><tr> +<td>HW layout of old LCD:<br><img width=272 height=272 src="lcd_old_hw.gif"></td> +<td>HW layout of new LCD:<br><img width=272 height=272 src="lcd_new_hw.gif"></td> +</tr></table> + +<h2>What is Rocklatin1</h2> +Rocklatin1 is based on Winlatin1 (which is identical to Latin1 but some +extra characters). All characters presented in any HW-LCD (i.e. old LCD) +is mapped in Rocklatin1 and some extra characters we find good to use. + +<table border=1><tr> +<td>Rocklatin1 of old LCD:<br><img width=272 height=272 src="lcd_old.gif"></td> +<td>Rocklatin1 of new LCD:<br><img width=272 height=272 src="lcd_new.gif"></td> +</tr></table> +The red characters are characters not defined in the HW-LCD. These characters +are mapped by the software to a software defined character (0-4/8) whenever +they are used. + +<h2>But what if...</h2> +...all software defined characters are taken?<br> +Well, then a substitute character will be used for that character. + +<table border=1><tr> +<td>Substitute of old LCD:<br><img width=272 height=272 src="lcd_old_subst.gif"></td> +<td>Substitute of new LCD:<br><img width=272 height=272 src="lcd_new_subst.gif"></td> +</tr></table> +The red characters shows where a substitution is made. + +<p> +All Rocklatin1 characters between 0x00 and 0x1f are hardcoded to be prioritized. +That means that if a national character is displayed at LCD and an icon +(0x18-0x1f) is to be shown, the character with highest Rocklatin1 value will +be switched to a substitute character. + +<h2>Accessing hardware</h2> +The Rockbox software can access a HW-LCD-character by doing a lcd_putc(0x100-0x1ff). That would of course make it 100% hardware depended (=not good). +<p> +The Rockbox software can also define 23 own patterns, even though hardware only +allows 4 or 8. The software should of course not try to display more than 4 +or 8 of such characters. This code example shows how to define a pattern: +<pre> +{ + unsigned char pattern[]={ 0x0a, 0x00, 0x00, 0x0c, + 0x04, 0x04, 0x0e}; + unsigned char handle; + + handle=lcd_get_locked_pattern(); + lcd_define_pattern(handle, pattern); + + lcd_putc(x, y, handle); + + ... + + lcd_unlock_pattern(handle); +} +</pre> +The handle is very likely to be between 0x01 to 0x17, which in software will +be handled as a prioritized character (even higher than the icons). + +<h2>Some notes</h2> +<ul> +<li>Displaying the same rocklatin-mapped-character many times at the LCD +only occupies one HW-LCD-mapped character. +<li>If a substitute character is used, the "should-be" character will never +be shown (no flickering screen) until the character is moved or scrolled. +<li>Characters already displayed are only substituted if a prioritized +character is to be displayed. +<li>The software maps the characters circular in order to minimize the +likelyhood to remap the same character very often. +<li>The gifs above is generated with the tool "generate_rocklatin". +<li>Rocklatin character 0x92 is defined as the "cursor" character. +<li>Rocklatin character 0x93-0x95 is only used for substitution (a substitute +character must be a Rocklatin character). +<li>Implementation and design by Kjell Ericson and Mats Lidell (for questions). +<li>Rocklatin1 is based on Winlatin1 because the old LCD happened to have 7 +of the Winlatin1-extra characters (no need to remap/remove those). +<li>If you find any characters identical in old and new HW-LCD that aren't +mapped (and really are useful) you can tell us. +</ul> + +#include "foot.t" |