#define _PAGE_ Rocklatin1 #include "head.t"

Only for developers...

Background

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.

The old LCD can have 4 software defined characters, and the new LCD can have 8 software defined characters.
HW layout of old LCD:
HW layout of new LCD:

What is Rocklatin1

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.
Rocklatin1 of old LCD:
Rocklatin1 of new LCD:
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.

But what if...

...all software defined characters are taken?
Well, then a substitute character will be used for that character.
Substitute of old LCD:
Substitute of new LCD:
The red characters shows where a substitution is made.

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.

Accessing hardware

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).

The Rockbox software can also define 22 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:

{
  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);
}
The handle is very likely to be between 0x01 to 0x15, which in software will be handled as a prioritized character (even higher than the icons).

Some notes

#include "foot.t"