summaryrefslogtreecommitdiff
path: root/www
diff options
context:
space:
mode:
authorKjell Ericson <kjell@haxx.se>2003-01-10 11:07:14 +0000
committerKjell Ericson <kjell@haxx.se>2003-01-10 11:07:14 +0000
commit602c049b39ce7f881e5c13b76d5419b106c50c86 (patch)
treee8f60dad737e7e2a674f47a5c3c618bbe0df1cb3 /www
parent3639325a2b04c4b2a4fe25b0ce2fc4a099d0c389 (diff)
downloadrockbox-602c049b39ce7f881e5c13b76d5419b106c50c86.tar.gz
rockbox-602c049b39ce7f881e5c13b76d5419b106c50c86.zip
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')
-rw-r--r--www/docs/index.t1
-rw-r--r--www/docs/lcd_new.gifbin0 -> 43437 bytes
-rw-r--r--www/docs/lcd_new_hw.gifbin0 -> 41878 bytes
-rw-r--r--www/docs/lcd_new_subst.gifbin0 -> 43437 bytes
-rw-r--r--www/docs/lcd_old.gifbin0 -> 43437 bytes
-rw-r--r--www/docs/lcd_old_hw.gifbin0 -> 41878 bytes
-rw-r--r--www/docs/lcd_old_subst.gifbin0 -> 43437 bytes
-rw-r--r--www/docs/rocklatin.t97
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 @@
20<li><a href="/sh-win/">Setting up the cross compiler for Windows</a> 20<li><a href="/sh-win/">Setting up the cross compiler for Windows</a>
21<li><a href="how_to_compile.html">How to compile Rockbox</a> (README from cvs) 21<li><a href="how_to_compile.html">How to compile Rockbox</a> (README from cvs)
22<li><a href="mpeghdr.html">MPEG frame header info</a> 22<li><a href="mpeghdr.html">MPEG frame header info</a>
23<li><a href="rocklatin.htm">Rocklatin charset in Player</a>
23</ul> 24</ul>
24 25
25#include "foot.t" 26#include "foot.t"
diff --git a/www/docs/lcd_new.gif b/www/docs/lcd_new.gif
new file mode 100644
index 0000000000..e305a33498
--- /dev/null
+++ b/www/docs/lcd_new.gif
Binary files differ
diff --git a/www/docs/lcd_new_hw.gif b/www/docs/lcd_new_hw.gif
new file mode 100644
index 0000000000..87930d3d65
--- /dev/null
+++ b/www/docs/lcd_new_hw.gif
Binary files differ
diff --git a/www/docs/lcd_new_subst.gif b/www/docs/lcd_new_subst.gif
new file mode 100644
index 0000000000..f5e8297ce6
--- /dev/null
+++ b/www/docs/lcd_new_subst.gif
Binary files differ
diff --git a/www/docs/lcd_old.gif b/www/docs/lcd_old.gif
new file mode 100644
index 0000000000..558b290066
--- /dev/null
+++ b/www/docs/lcd_old.gif
Binary files differ
diff --git a/www/docs/lcd_old_hw.gif b/www/docs/lcd_old_hw.gif
new file mode 100644
index 0000000000..19f35f6711
--- /dev/null
+++ b/www/docs/lcd_old_hw.gif
Binary files differ
diff --git a/www/docs/lcd_old_subst.gif b/www/docs/lcd_old_subst.gif
new file mode 100644
index 0000000000..45eb5a6206
--- /dev/null
+++ b/www/docs/lcd_old_subst.gif
Binary files differ
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 @@
1#define _PAGE_ Rocklatin
2#include "head.t"
3
4<h1>Rocklatin1</h1>
5
6Only for developers...
7
8<h2>Background</h2>
9The Archos player comes in two models. One with old LCD and one with new LCD.
10(Differences can be seen below). You can't find any difference more than the
11LCD, therefor we run the same code on both models. The original software
12contains two different mappings from ASCII-character to hardware-LCD. Because
13some characters doesn't exist in both hardwares all national characters
14are left out in both hardware.
15<p>The old LCD can have 4 software defined characters, and the new LCD can
16have 8 software defined characters.
17<table border=1><tr>
18<td>HW layout of old LCD:<br><img width=272 height=272 src="lcd_old_hw.gif"></td>
19<td>HW layout of new LCD:<br><img width=272 height=272 src="lcd_new_hw.gif"></td>
20</tr></table>
21
22<h2>What is Rocklatin1</h2>
23Rocklatin1 is based on Winlatin1 (which is identical to Latin1 but some
24extra characters). All characters presented in any HW-LCD (i.e. old LCD)
25is mapped in Rocklatin1 and some extra characters we find good to use.
26
27<table border=1><tr>
28<td>Rocklatin1 of old LCD:<br><img width=272 height=272 src="lcd_old.gif"></td>
29<td>Rocklatin1 of new LCD:<br><img width=272 height=272 src="lcd_new.gif"></td>
30</tr></table>
31The red characters are characters not defined in the HW-LCD. These characters
32are mapped by the software to a software defined character (0-4/8) whenever
33they are used.
34
35<h2>But what if...</h2>
36...all software defined characters are taken?<br>
37Well, then a substitute character will be used for that character.
38
39<table border=1><tr>
40<td>Substitute of old LCD:<br><img width=272 height=272 src="lcd_old_subst.gif"></td>
41<td>Substitute of new LCD:<br><img width=272 height=272 src="lcd_new_subst.gif"></td>
42</tr></table>
43The red characters shows where a substitution is made.
44
45<p>
46All Rocklatin1 characters between 0x00 and 0x1f are hardcoded to be prioritized.
47That means that if a national character is displayed at LCD and an icon
48(0x18-0x1f) is to be shown, the character with highest Rocklatin1 value will
49be switched to a substitute character.
50
51<h2>Accessing hardware</h2>
52The 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).
53<p>
54The Rockbox software can also define 23 own patterns, even though hardware only
55allows 4 or 8. The software should of course not try to display more than 4
56or 8 of such characters. This code example shows how to define a pattern:
57<pre>
58{
59 unsigned char pattern[]={ 0x0a, 0x00, 0x00, 0x0c,
60 0x04, 0x04, 0x0e};
61 unsigned char handle;
62
63 handle=lcd_get_locked_pattern();
64 lcd_define_pattern(handle, pattern);
65
66 lcd_putc(x, y, handle);
67
68 ...
69
70 lcd_unlock_pattern(handle);
71}
72</pre>
73The handle is very likely to be between 0x01 to 0x17, which in software will
74be handled as a prioritized character (even higher than the icons).
75
76<h2>Some notes</h2>
77<ul>
78<li>Displaying the same rocklatin-mapped-character many times at the LCD
79only occupies one HW-LCD-mapped character.
80<li>If a substitute character is used, the "should-be" character will never
81be shown (no flickering screen) until the character is moved or scrolled.
82<li>Characters already displayed are only substituted if a prioritized
83character is to be displayed.
84<li>The software maps the characters circular in order to minimize the
85likelyhood to remap the same character very often.
86<li>The gifs above is generated with the tool "generate_rocklatin".
87<li>Rocklatin character 0x92 is defined as the "cursor" character.
88<li>Rocklatin character 0x93-0x95 is only used for substitution (a substitute
89character must be a Rocklatin character).
90<li>Implementation and design by Kjell Ericson and Mats Lidell (for questions).
91<li>Rocklatin1 is based on Winlatin1 because the old LCD happened to have 7
92of the Winlatin1-extra characters (no need to remap/remove those).
93<li>If you find any characters identical in old and new HW-LCD that aren't
94mapped (and really are useful) you can tell us.
95</ul>
96
97#include "foot.t"