Updated for better player simulator.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2760 a1c6a512-1295-4272-9138-f99709370657
diff --git a/uisimulator/common/font-player.c b/uisimulator/common/font-player.c
new file mode 100644
index 0000000..988b903
--- /dev/null
+++ b/uisimulator/common/font-player.c
@@ -0,0 +1,548 @@
+/***************************************************************************
+ *             __________               __   ___.
+ *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
+ *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
+ *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
+ *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
+ *                     \/            \/     \/    \/            \/
+ * $Id$
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#include "font-player.h"
+
+#include "hwcompat.h"
+
+
+unsigned char font_new_player[256][5] = {
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 00 */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 01 */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 02 */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 03 */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 04 */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 05 */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 06 */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 07 */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 08 */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 09 */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0a */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0b */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0c */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0d */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0e */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0f */
+	{ 0x3e, 0x1c, 0x1c, 0x08, 0x08 }, /* 10 */
+	{ 0x08, 0x08, 0x1c, 0x1c, 0x3e }, /* 11 */
+	{ 0x02, 0x04, 0x08, 0x10, 0x20 }, /* 12 */
+	{ 0x00, 0x4f, 0x00, 0x4f, 0x00 }, /* 13 */
+	{ 0x06, 0x0f, 0x7f, 0x01, 0x7f }, /* 14 */
+	{ 0x48, 0x56, 0x55, 0x35, 0x09 }, /* 15 */
+	{ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c }, /* 16 */
+	{ 0x10, 0x38, 0x54, 0x10, 0x1f }, /* 17 */
+	{ 0x04, 0x02, 0x7f, 0x02, 0x04 }, /* 18 */
+	{ 0x10, 0x20, 0x7f, 0x20, 0x10 }, /* 19 */
+	{ 0x7f, 0x3e, 0x1c, 0x08, 0x7f }, /* 1a */
+	{ 0x7f, 0x08, 0x1c, 0x3e, 0x7f }, /* 1b */
+	{ 0x7f, 0x08, 0x2a, 0x1c, 0x08 }, /* 1c */
+	{ 0x08, 0x1c, 0x2a, 0x08, 0x7f }, /* 1d */
+	{ 0x02, 0x0e, 0x3e, 0x0e, 0x02 }, /* 1e */
+	{ 0x20, 0x38, 0x3e, 0x38, 0x20 }, /* 1f */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 20 */
+	{ 0x00, 0x00, 0x4f, 0x00, 0x00 }, /* 21 */
+	{ 0x00, 0x07, 0x00, 0x07, 0x00 }, /* 22 */
+	{ 0x14, 0x7f, 0x14, 0x7f, 0x14 }, /* 23 */
+	{ 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, /* 24 */
+	{ 0x23, 0x13, 0x08, 0x64, 0x62 }, /* 25 */
+	{ 0x36, 0x49, 0x55, 0x22, 0x50 }, /* 26 */
+	{ 0x00, 0x05, 0x03, 0x00, 0x00 }, /* 27 */
+	{ 0x00, 0x1c, 0x22, 0x41, 0x00 }, /* 28 */
+	{ 0x00, 0x41, 0x22, 0x1c, 0x00 }, /* 29 */
+	{ 0x14, 0x08, 0x3e, 0x08, 0x14 }, /* 2a */
+	{ 0x08, 0x08, 0x3e, 0x08, 0x08 }, /* 2b */
+	{ 0x00, 0x50, 0x30, 0x00, 0x00 }, /* 2c */
+	{ 0x08, 0x08, 0x08, 0x08, 0x08 }, /* 2d */
+	{ 0x00, 0x30, 0x30, 0x00, 0x00 }, /* 2e */
+	{ 0x20, 0x10, 0x08, 0x04, 0x02 }, /* 2f */
+	{ 0x3e, 0x51, 0x49, 0x45, 0x3e }, /* 30 */
+	{ 0x00, 0x42, 0x7f, 0x40, 0x00 }, /* 31 */
+	{ 0x42, 0x61, 0x51, 0x49, 0x46 }, /* 32 */
+	{ 0x21, 0x41, 0x45, 0x4b, 0x31 }, /* 33 */
+	{ 0x18, 0x14, 0x12, 0x7f, 0x10 }, /* 34 */
+	{ 0x27, 0x45, 0x45, 0x45, 0x39 }, /* 35 */
+	{ 0x3c, 0x4a, 0x49, 0x49, 0x30 }, /* 36 */
+	{ 0x01, 0x01, 0x71, 0x0d, 0x03 }, /* 37 */
+	{ 0x36, 0x49, 0x49, 0x49, 0x36 }, /* 38 */
+	{ 0x06, 0x49, 0x49, 0x29, 0x1e }, /* 39 */
+	{ 0x00, 0x36, 0x36, 0x00, 0x00 }, /* 3a */
+	{ 0x00, 0x5b, 0x3b, 0x00, 0x00 }, /* 3b */
+	{ 0x08, 0x14, 0x22, 0x41, 0x00 }, /* 3c */
+	{ 0x14, 0x14, 0x14, 0x14, 0x14 }, /* 3d */
+	{ 0x00, 0x41, 0x22, 0x14, 0x08 }, /* 3e */
+	{ 0x02, 0x01, 0x51, 0x09, 0x06 }, /* 3f */
+	{ 0x32, 0x49, 0x79, 0x41, 0x3e }, /* 40 */
+	{ 0x7e, 0x11, 0x11, 0x11, 0x7e }, /* 41 */
+	{ 0x7f, 0x49, 0x49, 0x49, 0x36 }, /* 42 */
+	{ 0x3e, 0x41, 0x41, 0x41, 0x22 }, /* 43 */
+	{ 0x7f, 0x41, 0x41, 0x22, 0x1c }, /* 44 */
+	{ 0x7f, 0x49, 0x49, 0x49, 0x41 }, /* 45 */
+	{ 0x7f, 0x09, 0x09, 0x09, 0x01 }, /* 46 */
+	{ 0x3e, 0x41, 0x49, 0x49, 0x7a }, /* 47 */
+	{ 0x7f, 0x08, 0x08, 0x08, 0x7f }, /* 48 */
+	{ 0x00, 0x41, 0x7f, 0x41, 0x00 }, /* 49 */
+	{ 0x20, 0x41, 0x41, 0x3f, 0x01 }, /* 4a */
+	{ 0x7f, 0x08, 0x14, 0x22, 0x41 }, /* 4b */
+	{ 0x7f, 0x40, 0x40, 0x40, 0x40 }, /* 4c */
+	{ 0x7f, 0x02, 0x0c, 0x02, 0x7f }, /* 4d */
+	{ 0x7f, 0x04, 0x08, 0x10, 0x7f }, /* 4e */
+	{ 0x3e, 0x41, 0x41, 0x41, 0x3e }, /* 4f */
+	{ 0x7f, 0x09, 0x09, 0x09, 0x06 }, /* 50 */
+	{ 0x3e, 0x41, 0x41, 0x21, 0x5e }, /* 51 */
+	{ 0x7f, 0x09, 0x19, 0x29, 0x46 }, /* 52 */
+	{ 0x26, 0x49, 0x49, 0x49, 0x32 }, /* 53 */
+	{ 0x01, 0x01, 0x7f, 0x01, 0x01 }, /* 54 */
+	{ 0x3f, 0x40, 0x40, 0x40, 0x3f }, /* 55 */
+	{ 0x1f, 0x20, 0x40, 0x20, 0x1f }, /* 56 */
+	{ 0x3f, 0x40, 0x38, 0x40, 0x3f }, /* 57 */
+	{ 0x63, 0x14, 0x08, 0x14, 0x63 }, /* 58 */
+	{ 0x03, 0x04, 0x78, 0x04, 0x03 }, /* 59 */
+	{ 0x61, 0x51, 0x49, 0x45, 0x43 }, /* 5a */
+	{ 0x00, 0x7f, 0x41, 0x41, 0x00 }, /* 5b */
+	{ 0x15, 0x16, 0x7c, 0x16, 0x15 }, /* 5c */
+	{ 0x00, 0x41, 0x41, 0x7f, 0x00 }, /* 5d */
+	{ 0x04, 0x02, 0x01, 0x02, 0x04 }, /* 5e */
+	{ 0x40, 0x40, 0x40, 0x40, 0x40 }, /* 5f */
+	{ 0x00, 0x01, 0x02, 0x04, 0x00 }, /* 60 */
+	{ 0x20, 0x54, 0x54, 0x54, 0x78 }, /* 61 */
+	{ 0x7f, 0x48, 0x44, 0x44, 0x38 }, /* 62 */
+	{ 0x38, 0x44, 0x44, 0x44, 0x20 }, /* 63 */
+	{ 0x38, 0x44, 0x44, 0x48, 0x7f }, /* 64 */
+	{ 0x38, 0x54, 0x54, 0x54, 0x18 }, /* 65 */
+	{ 0x08, 0x7e, 0x09, 0x01, 0x02 }, /* 66 */
+	{ 0x0c, 0x52, 0x52, 0x52, 0x3e }, /* 67 */
+	{ 0x7f, 0x08, 0x04, 0x04, 0x78 }, /* 68 */
+	{ 0x00, 0x44, 0x7d, 0x40, 0x00 }, /* 69 */
+	{ 0x20, 0x40, 0x44, 0x3d, 0x00 }, /* 6a */
+	{ 0x7f, 0x10, 0x28, 0x44, 0x00 }, /* 6b */
+	{ 0x00, 0x41, 0x7f, 0x40, 0x00 }, /* 6c */
+	{ 0x7c, 0x04, 0x18, 0x04, 0x78 }, /* 6d */
+	{ 0x7c, 0x08, 0x04, 0x04, 0x78 }, /* 6e */
+	{ 0x38, 0x44, 0x44, 0x44, 0x38 }, /* 6f */
+	{ 0x7c, 0x14, 0x14, 0x14, 0x08 }, /* 70 */
+	{ 0x08, 0x14, 0x14, 0x18, 0x7c }, /* 71 */
+	{ 0x7c, 0x08, 0x04, 0x04, 0x08 }, /* 72 */
+	{ 0x48, 0x54, 0x54, 0x54, 0x20 }, /* 73 */
+	{ 0x04, 0x3f, 0x44, 0x40, 0x20 }, /* 74 */
+	{ 0x3c, 0x40, 0x40, 0x20, 0x7c }, /* 75 */
+	{ 0x1c, 0x20, 0x40, 0x20, 0x1c }, /* 76 */
+	{ 0x3c, 0x40, 0x30, 0x40, 0x3c }, /* 77 */
+	{ 0x44, 0x28, 0x10, 0x28, 0x44 }, /* 78 */
+	{ 0x4c, 0x50, 0x50, 0x50, 0x3c }, /* 79 */
+	{ 0x44, 0x64, 0x54, 0x4c, 0x44 }, /* 7a */
+	{ 0x00, 0x08, 0x36, 0x41, 0x00 }, /* 7b */
+	{ 0x00, 0x00, 0x7f, 0x00, 0x00 }, /* 7c */
+	{ 0x00, 0x41, 0x36, 0x08, 0x00 }, /* 7d */
+	{ 0x08, 0x08, 0x2a, 0x1c, 0x08 }, /* 7e */
+	{ 0x08, 0x1c, 0x2a, 0x08, 0x08 }, /* 7f */
+	{ 0x40, 0x40, 0x40, 0x40, 0x40 }, /* 80 */
+	{ 0x60, 0x60, 0x60, 0x60, 0x60 }, /* 81 */
+	{ 0x70, 0x70, 0x70, 0x70, 0x70 }, /* 82 */
+	{ 0x78, 0x78, 0x78, 0x78, 0x78 }, /* 83 */
+	{ 0x7c, 0x7c, 0x7c, 0x7c, 0x7c }, /* 84 */
+	{ 0x7e, 0x7e, 0x7e, 0x7e, 0x7e }, /* 85 */
+	{ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f }, /* 86 */
+	{ 0x08, 0x2a, 0x1c, 0x2a, 0x08 }, /* 87 */
+	{ 0x7f, 0x00, 0x00, 0x00, 0x7f }, /* 88 */
+	{ 0x7f, 0x7f, 0x00, 0x00, 0x7f }, /* 89 */
+	{ 0x7f, 0x7f, 0x7f, 0x00, 0x7f }, /* 8a */
+	{ 0x00, 0x7f, 0x00, 0x00, 0x00 }, /* 8b */
+	{ 0x00, 0x7f, 0x7f, 0x00, 0x00 }, /* 8c */
+	{ 0x00, 0x7f, 0x7f, 0x7f, 0x00 }, /* 8d */
+	{ 0x00, 0x7f, 0x7f, 0x7f, 0x7f }, /* 8e */
+	{ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e }, /* 8f */
+	{ 0x1c, 0x3e, 0x3e, 0x3e, 0x1c }, /* 90 */
+	{ 0x7f, 0x41, 0x41, 0x41, 0x7f }, /* 91 */
+	{ 0x7f, 0x5b, 0x41, 0x5f, 0x7f }, /* 92 */
+	{ 0x7f, 0x4d, 0x55, 0x59, 0x7f }, /* 93 */
+	{ 0x20, 0x40, 0x3c, 0x04, 0x04 }, /* 94 */
+	{ 0x44, 0x44, 0x5f, 0x44, 0x44 }, /* 95 */
+	{ 0x22, 0x14, 0x08, 0x14, 0x22 }, /* 96 */
+	{ 0x08, 0x08, 0x2a, 0x08, 0x08 }, /* 97 */
+	{ 0x45, 0x29, 0x11, 0x29, 0x45 }, /* 98 */
+	{ 0x1d, 0x15, 0x17, 0x00, 0x00 }, /* 99 */
+	{ 0x15, 0x15, 0x1f, 0x00, 0x00 }, /* 9a */
+	{ 0x17, 0x08, 0x74, 0x56, 0x5d }, /* 9b */
+	{ 0x17, 0x08, 0x24, 0x32, 0x79 }, /* 9c */
+	{ 0x35, 0x1f, 0x28, 0x34, 0x7a }, /* 9d */
+	{ 0x08, 0x14, 0x2a, 0x14, 0x22 }, /* 9e */
+	{ 0x22, 0x14, 0x2a, 0x14, 0x08 }, /* 9f */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* a0 */
+	{ 0x70, 0x50, 0x70, 0x00, 0x00 }, /* a1 */
+	{ 0x00, 0x00, 0x0f, 0x01, 0x01 }, /* a2 */
+	{ 0x40, 0x40, 0x78, 0x00, 0x00 }, /* a3 */
+	{ 0x10, 0x20, 0x40, 0x00, 0x00 }, /* a4 */
+	{ 0x00, 0x18, 0x18, 0x00, 0x00 }, /* a5 */
+	{ 0x0a, 0x0a, 0x4a, 0x2a, 0x1e }, /* a6 */
+	{ 0x04, 0x44, 0x34, 0x14, 0x0c }, /* a7 */
+	{ 0x20, 0x10, 0x78, 0x04, 0x00 }, /* a8 */
+	{ 0x18, 0x08, 0x4c, 0x48, 0x38 }, /* a9 */
+	{ 0x48, 0x48, 0x78, 0x48, 0x48 }, /* aa */
+	{ 0x48, 0x28, 0x18, 0x7c, 0x08 }, /* ab */
+	{ 0x08, 0x7c, 0x08, 0x28, 0x18 }, /* ac */
+	{ 0x40, 0x48, 0x48, 0x78, 0x40 }, /* ad */
+	{ 0x54, 0x54, 0x54, 0x7c, 0x00 }, /* ae */
+	{ 0x18, 0x00, 0x58, 0x40, 0x38 }, /* af */
+	{ 0x08, 0x08, 0x08, 0x08, 0x08 }, /* b0 */
+	{ 0x01, 0x41, 0x3d, 0x09, 0x07 }, /* b1 */
+	{ 0x10, 0x08, 0x7c, 0x02, 0x01 }, /* b2 */
+	{ 0x0e, 0x02, 0x43, 0x22, 0x1e }, /* b3 */
+	{ 0x42, 0x42, 0x7e, 0x42, 0x42 }, /* b4 */
+	{ 0x22, 0x12, 0x0a, 0x7f, 0x02 }, /* b5 */
+	{ 0x42, 0x3f, 0x02, 0x42, 0x3e }, /* b6 */
+	{ 0x0a, 0x0a, 0x7f, 0x0a, 0x0a }, /* b7 */
+	{ 0x08, 0x46, 0x42, 0x22, 0x1e }, /* b8 */
+	{ 0x04, 0x03, 0x42, 0x3e, 0x02 }, /* b9 */
+	{ 0x42, 0x42, 0x42, 0x42, 0x7e }, /* ba */
+	{ 0x02, 0x07, 0x42, 0x3f, 0x02 }, /* bb */
+	{ 0x4a, 0x4a, 0x40, 0x20, 0x10 }, /* bc */
+	{ 0x42, 0x22, 0x12, 0x2a, 0x46 }, /* bd */
+	{ 0x02, 0x3f, 0x42, 0x4a, 0x46 }, /* be */
+	{ 0x06, 0x48, 0x40, 0x20, 0x1e }, /* bf */
+	{ 0x08, 0x46, 0x4a, 0x32, 0x1e }, /* c0 */
+	{ 0x0a, 0x4a, 0x3e, 0x09, 0x08 }, /* c1 */
+	{ 0x0e, 0x00, 0x4e, 0x20, 0x1e }, /* c2 */
+	{ 0x04, 0x45, 0x3d, 0x05, 0x04 }, /* c3 */
+	{ 0x00, 0x7f, 0x08, 0x10, 0x00 }, /* c4 */
+	{ 0x44, 0x24, 0x1f, 0x04, 0x04 }, /* c5 */
+	{ 0x40, 0x42, 0x42, 0x42, 0x40 }, /* c6 */
+	{ 0x42, 0x2a, 0x12, 0x2a, 0x06 }, /* c7 */
+	{ 0x22, 0x12, 0x7b, 0x16, 0x22 }, /* c8 */
+	{ 0x00, 0x40, 0x20, 0x1f, 0x00 }, /* c9 */
+	{ 0x78, 0x00, 0x02, 0x04, 0x78 }, /* ca */
+	{ 0x3f, 0x44, 0x44, 0x44, 0x44 }, /* cb */
+	{ 0x02, 0x42, 0x42, 0x22, 0x1e }, /* cc */
+	{ 0x04, 0x02, 0x04, 0x08, 0x30 }, /* cd */
+	{ 0x32, 0x02, 0x7f, 0x02, 0x32 }, /* ce */
+	{ 0x02, 0x12, 0x22, 0x52, 0x0e }, /* cf */
+	{ 0x00, 0x2a, 0x2a, 0x2a, 0x40 }, /* d0 */
+	{ 0x38, 0x24, 0x22, 0x20, 0x70 }, /* d1 */
+	{ 0x40, 0x28, 0x10, 0x28, 0x06 }, /* d2 */
+	{ 0x0a, 0x3e, 0x4a, 0x4a, 0x4a }, /* d3 */
+	{ 0x04, 0x7f, 0x04, 0x14, 0x0c }, /* d4 */
+	{ 0x40, 0x42, 0x42, 0x7e, 0x40 }, /* d5 */
+	{ 0x4a, 0x4a, 0x4a, 0x4a, 0x7e }, /* d6 */
+	{ 0x04, 0x05, 0x45, 0x25, 0x1c }, /* d7 */
+	{ 0x1f, 0x40, 0x20, 0x1f, 0x00 }, /* d8 */
+	{ 0x7c, 0x00, 0x7e, 0x40, 0x30 }, /* d9 */
+	{ 0x7e, 0x40, 0x20, 0x10, 0x08 }, /* da */
+	{ 0x7f, 0x41, 0x41, 0x41, 0x7f }, /* db */
+	{ 0x0e, 0x02, 0x42, 0x22, 0x1e }, /* dc */
+	{ 0x42, 0x42, 0x40, 0x20, 0x18 }, /* dd */
+	{ 0x02, 0x04, 0x01, 0x02, 0x00 }, /* de */
+	{ 0x07, 0x05, 0x07, 0x00, 0x00 }, /* df */
+	{ 0x38, 0x44, 0x48, 0x30, 0x4c }, /* e0 */
+	{ 0x7c, 0x2a, 0x2a, 0x2a, 0x14 }, /* e1 */
+	{ 0x02, 0x4c, 0x30, 0x0c, 0x02 }, /* e2 */
+	{ 0x44, 0x3c, 0x04, 0x7c, 0x44 }, /* e3 */
+	{ 0x63, 0x55, 0x49, 0x41, 0x41 }, /* e4 */
+	{ 0x38, 0x44, 0x4c, 0x54, 0x24 }, /* e5 */
+	{ 0x40, 0x3e, 0x10, 0x10, 0x1e }, /* e6 */
+	{ 0x04, 0x04, 0x3c, 0x44, 0x44 }, /* e7 */
+	{ 0x49, 0x55, 0x7f, 0x55, 0x49 }, /* e8 */
+	{ 0x3c, 0x4a, 0x4a, 0x4a, 0x3c }, /* e9 */
+	{ 0x58, 0x64, 0x04, 0x64, 0x58 }, /* ea */
+	{ 0x3a, 0x45, 0x45, 0x45, 0x39 }, /* eb */
+	{ 0x60, 0x50, 0x20, 0x50, 0x30 }, /* ec */
+	{ 0x08, 0x54, 0x3e, 0x15, 0x08 }, /* ed */
+	{ 0x14, 0x2a, 0x2a, 0x2a, 0x00 }, /* ee */
+	{ 0x7c, 0x0a, 0x09, 0x09, 0x06 }, /* ef */
+	{ 0x08, 0x04, 0x08, 0x10, 0x08 }, /* f0 */
+	{ 0x14, 0x0a, 0x14, 0x28, 0x14 }, /* f1 */
+	{ 0x24, 0x3b, 0x2a, 0x7e, 0x2a }, /* f2 */
+	{ 0x40, 0x3f, 0x15, 0x15, 0x7f }, /* f3 */
+	{ 0x46, 0x20, 0x1f, 0x20, 0x46 }, /* f4 */
+	{ 0x24, 0x14, 0x7f, 0x18, 0x24 }, /* f5 */
+	{ 0x24, 0x14, 0x7f, 0x14, 0x24 }, /* f6 */
+	{ 0x44, 0x6a, 0x79, 0x6a, 0x44 }, /* f7 */
+	{ 0x40, 0x44, 0x7f, 0x44, 0x40 }, /* f8 */
+	{ 0x7f, 0x49, 0x49, 0x49, 0x7f }, /* f9 */
+	{ 0x14, 0x14, 0x7c, 0x14, 0x12 }, /* fa */
+	{ 0x44, 0x3c, 0x14, 0x14, 0x74 }, /* fb */
+	{ 0x7c, 0x14, 0x1c, 0x14, 0x7c }, /* fc */
+	{ 0x2a, 0x55, 0x2a, 0x55, 0x2a }, /* fd */
+	{ 0x55, 0x2a, 0x55, 0x2a, 0x55 }, /* fe */
+	{ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f }  /* ff */
+};
+
+unsigned char font_old_player[256][5] = {
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 00 */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 01 */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 02 */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 03 */
+	{ 0x3e, 0x41, 0x5d, 0x55, 0x1e }, /* 04 */
+	{ 0x48, 0x7e, 0x49, 0x49, 0x42 }, /* 05 */
+	{ 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, /* 06 */
+	{ 0x15, 0x16, 0x7c, 0x16, 0x15 }, /* 07 */
+	{ 0x38, 0x55, 0x56, 0x54, 0x18 }, /* 08 */
+	{ 0x38, 0x54, 0x56, 0x55, 0x18 }, /* 09 */
+	{ 0x38, 0x41, 0x42, 0x20, 0x78 }, /* 0a */
+	{ 0x00, 0x49, 0x7a, 0x40, 0x00 }, /* 0b */
+	{ 0x30, 0x49, 0x4a, 0x48, 0x30 }, /* 0c */
+	{ 0x0e, 0x51, 0x51, 0x71, 0x11 }, /* 0d */
+	{ 0x1f, 0x10, 0x7c, 0x14, 0x04 }, /* 0e */
+	{ 0x5c, 0x32, 0x2a, 0x26, 0x1d }, /* 0f */
+	{ 0x18, 0x64, 0x3c, 0x26, 0x18 }, /* 10 */
+	{ 0x0f, 0x09, 0x7d, 0x34, 0x5c }, /* 11 */
+	{ 0x70, 0x2a, 0x2d, 0x2a, 0x70 }, /* 12 */
+	{ 0x20, 0x52, 0x55, 0x52, 0x78 }, /* 13 */
+	{ 0x60, 0x58, 0x46, 0x58, 0x60 }, /* 14 */
+	{ 0x40, 0x40, 0x40, 0x40, 0x40 }, /* 15 */
+	{ 0x1c, 0x55, 0x7f, 0x55, 0x1c }, /* 16 */
+	{ 0x7f, 0x01, 0x01, 0x01, 0x07 }, /* 17 */
+	{ 0x70, 0x0c, 0x03, 0x0c, 0x70 }, /* 18 */
+	{ 0x4e, 0x71, 0x01, 0x71, 0x4e }, /* 19 */
+	{ 0x01, 0x7f, 0x01, 0x7f, 0x01 }, /* 1a */
+	{ 0x0f, 0x10, 0x7f, 0x10, 0x0f }, /* 1b */
+	{ 0x41, 0x63, 0x55, 0x49, 0x41 }, /* 1c */
+	{ 0x3e, 0x49, 0x49, 0x49, 0x3e }, /* 1d */
+	{ 0x63, 0x49, 0x49, 0x49, 0x63 }, /* 1e */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 1f */
+	{ 0x7e, 0x09, 0x7f, 0x49, 0x49 }, /* 20 */
+	{ 0x24, 0x54, 0x78, 0x54, 0x58 }, /* 21 */
+	{ 0x7e, 0x01, 0x25, 0x26, 0x18 }, /* 22 */
+	{ 0x7c, 0x54, 0x56, 0x45, 0x44 }, /* 23 */
+	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 24 */
+	{ 0x00, 0x00, 0x5f, 0x00, 0x00 }, /* 25 */
+	{ 0x05, 0x03, 0x00, 0x05, 0x03 }, /* 26 */
+	{ 0x14, 0x7f, 0x14, 0x7f, 0x14 }, /* 27 */
+	{ 0x22, 0x1c, 0x14, 0x1c, 0x22 }, /* 28 */
+	{ 0x23, 0x13, 0x08, 0x64, 0x62 }, /* 29 */
+	{ 0x36, 0x49, 0x56, 0x20, 0x58 }, /* 2a */
+	{ 0x00, 0x05, 0x03, 0x00, 0x00 }, /* 2b */
+	{ 0x00, 0x1c, 0x22, 0x41, 0x00 }, /* 2c */
+	{ 0x00, 0x41, 0x22, 0x1c, 0x00 }, /* 2d */
+	{ 0x22, 0x14, 0x7f, 0x14, 0x22 }, /* 2e */
+	{ 0x08, 0x08, 0x3e, 0x08, 0x08 }, /* 2f */
+	{ 0x00, 0x50, 0x30, 0x00, 0x00 }, /* 30 */
+	{ 0x08, 0x08, 0x08, 0x08, 0x08 }, /* 31 */
+	{ 0x00, 0x30, 0x30, 0x00, 0x00 }, /* 32 */
+	{ 0x20, 0x10, 0x08, 0x04, 0x02 }, /* 33 */
+	{ 0x3e, 0x41, 0x41, 0x41, 0x3e }, /* 34 */
+	{ 0x00, 0x42, 0x7f, 0x40, 0x00 }, /* 35 */
+	{ 0x42, 0x61, 0x51, 0x49, 0x46 }, /* 36 */
+	{ 0x21, 0x41, 0x45, 0x4b, 0x31 }, /* 37 */
+	{ 0x18, 0x14, 0x12, 0x7f, 0x10 }, /* 38 */
+	{ 0x27, 0x45, 0x45, 0x45, 0x39 }, /* 39 */
+	{ 0x3c, 0x4a, 0x49, 0x49, 0x30 }, /* 3a */
+	{ 0x01, 0x01, 0x71, 0x0d, 0x03 }, /* 3b */
+	{ 0x36, 0x49, 0x49, 0x49, 0x36 }, /* 3c */
+	{ 0x06, 0x49, 0x49, 0x29, 0x1e }, /* 3d */
+	{ 0x00, 0x36, 0x36, 0x00, 0x00 }, /* 3e */
+	{ 0x00, 0x56, 0x36, 0x00, 0x00 }, /* 3f */
+	{ 0x08, 0x1c, 0x36, 0x63, 0x41 }, /* 40 */
+	{ 0x14, 0x14, 0x14, 0x14, 0x14 }, /* 41 */
+	{ 0x41, 0x63, 0x36, 0x1c, 0x08 }, /* 42 */
+	{ 0x02, 0x01, 0x51, 0x09, 0x06 }, /* 43 */
+	{ 0x00, 0x00, 0x7d, 0x00, 0x00 }, /* 44 */
+	{ 0x7c, 0x12, 0x11, 0x12, 0x7c }, /* 45 */
+	{ 0x7f, 0x49, 0x49, 0x49, 0x36 }, /* 46 */
+	{ 0x3e, 0x41, 0x41, 0x41, 0x22 }, /* 47 */
+	{ 0x7f, 0x41, 0x41, 0x22, 0x1c }, /* 48 */
+	{ 0x7f, 0x49, 0x49, 0x49, 0x41 }, /* 49 */
+	{ 0x7f, 0x09, 0x09, 0x09, 0x01 }, /* 4a */
+	{ 0x3e, 0x41, 0x49, 0x49, 0x38 }, /* 4b */
+	{ 0x7f, 0x08, 0x08, 0x08, 0x7f }, /* 4c */
+	{ 0x00, 0x41, 0x7f, 0x41, 0x00 }, /* 4d */
+	{ 0x20, 0x41, 0x41, 0x3f, 0x01 }, /* 4e */
+	{ 0x7f, 0x08, 0x14, 0x22, 0x41 }, /* 4f */
+	{ 0x7f, 0x40, 0x40, 0x40, 0x40 }, /* 50 */
+	{ 0x7f, 0x02, 0x04, 0x02, 0x7f }, /* 51 */
+	{ 0x7f, 0x04, 0x08, 0x10, 0x7f }, /* 52 */
+	{ 0x3e, 0x41, 0x41, 0x41, 0x3e }, /* 53 */
+	{ 0x7f, 0x09, 0x09, 0x09, 0x06 }, /* 54 */
+	{ 0x3e, 0x41, 0x41, 0x21, 0x5e }, /* 55 */
+	{ 0x7f, 0x09, 0x19, 0x29, 0x46 }, /* 56 */
+	{ 0x26, 0x49, 0x49, 0x49, 0x32 }, /* 57 */
+	{ 0x01, 0x01, 0x7f, 0x01, 0x01 }, /* 58 */
+	{ 0x3f, 0x40, 0x40, 0x40, 0x3f }, /* 59 */
+	{ 0x1f, 0x20, 0x40, 0x20, 0x1f }, /* 5a */
+	{ 0x3f, 0x40, 0x20, 0x40, 0x3f }, /* 5b */
+	{ 0x63, 0x14, 0x08, 0x14, 0x63 }, /* 5c */
+	{ 0x03, 0x04, 0x78, 0x04, 0x03 }, /* 5d */
+	{ 0x61, 0x51, 0x49, 0x45, 0x43 }, /* 5e */
+	{ 0x70, 0x29, 0x24, 0x29, 0x70 }, /* 5f */
+	{ 0x38, 0x45, 0x44, 0x45, 0x38 }, /* 60 */
+	{ 0x7a, 0x09, 0x11, 0x22, 0x79 }, /* 61 */
+	{ 0x3c, 0x41, 0x40, 0x41, 0x3c }, /* 62 */
+	{ 0x0a, 0x55, 0x55, 0x55, 0x28 }, /* 63 */
+	{ 0x30, 0x48, 0x45, 0x40, 0x20 }, /* 64 */
+	{ 0x20, 0x54, 0x54, 0x54, 0x78 }, /* 65 */
+	{ 0x7f, 0x44, 0x44, 0x44, 0x38 }, /* 66 */
+	{ 0x38, 0x44, 0x44, 0x44, 0x44 }, /* 67 */
+	{ 0x38, 0x44, 0x44, 0x44, 0x7f }, /* 68 */
+	{ 0x38, 0x54, 0x54, 0x54, 0x58 }, /* 69 */
+	{ 0x00, 0x04, 0x7e, 0x05, 0x05 }, /* 6a */
+	{ 0x08, 0x54, 0x54, 0x54, 0x3c }, /* 6b */
+	{ 0x7f, 0x08, 0x04, 0x04, 0x78 }, /* 6c */
+	{ 0x00, 0x44, 0x7d, 0x40, 0x00 }, /* 6d */
+	{ 0x20, 0x40, 0x44, 0x3d, 0x00 }, /* 6e */
+	{ 0x00, 0x7f, 0x10, 0x28, 0x44 }, /* 6f */
+	{ 0x00, 0x41, 0x7f, 0x40, 0x00 }, /* 70 */
+	{ 0x7c, 0x04, 0x78, 0x04, 0x78 }, /* 71 */
+	{ 0x7c, 0x08, 0x04, 0x04, 0x78 }, /* 72 */
+	{ 0x38, 0x44, 0x44, 0x44, 0x38 }, /* 73 */
+	{ 0x7c, 0x14, 0x14, 0x14, 0x08 }, /* 74 */
+	{ 0x08, 0x14, 0x14, 0x14, 0x7c }, /* 75 */
+	{ 0x00, 0x7c, 0x08, 0x04, 0x04 }, /* 76 */
+	{ 0x48, 0x54, 0x54, 0x54, 0x20 }, /* 77 */
+	{ 0x00, 0x04, 0x3f, 0x44, 0x44 }, /* 78 */
+	{ 0x3c, 0x40, 0x40, 0x20, 0x7c }, /* 79 */
+	{ 0x1c, 0x20, 0x40, 0x20, 0x1c }, /* 7a */
+	{ 0x3c, 0x40, 0x20, 0x40, 0x3c }, /* 7b */
+	{ 0x44, 0x28, 0x10, 0x28, 0x44 }, /* 7c */
+	{ 0x4c, 0x50, 0x50, 0x50, 0x3c }, /* 7d */
+	{ 0x44, 0x64, 0x54, 0x4c, 0x44 }, /* 7e */
+	{ 0x20, 0x55, 0x54, 0x55, 0x78 }, /* 7f */
+	{ 0x30, 0x4a, 0x48, 0x4a, 0x30 }, /* 80 */
+	{ 0x7a, 0x11, 0x09, 0x0a, 0x71 }, /* 81 */
+	{ 0x38, 0x42, 0x40, 0x22, 0x78 }, /* 82 */
+	{ 0x20, 0x55, 0x56, 0x54, 0x78 }, /* 83 */
+	{ 0x0c, 0x12, 0x52, 0x32, 0x12 }, /* 84 */
+	{ 0x20, 0x00, 0x20, 0x00, 0x20 }, /* 85 */
+	{ 0x10, 0x18, 0x1c, 0x18, 0x10 }, /* 86 */
+	{ 0x04, 0x0c, 0x1c, 0x0c, 0x04 }, /* 87 */
+	{ 0x08, 0x1c, 0x3e, 0x7f, 0x00 }, /* 88 */
+	{ 0x00, 0x7f, 0x3e, 0x1c, 0x08 }, /* 89 */
+	{ 0x7f, 0x03, 0x03, 0x06, 0x06 }, /* 8a */
+	{ 0x55, 0x2a, 0x55, 0x2a, 0x55 }, /* 8b */
+	{ 0x78, 0x15, 0x16, 0x14, 0x78 }, /* 8c */
+	{ 0x78, 0x14, 0x16, 0x15, 0x78 }, /* 8d */
+	{ 0x78, 0x16, 0x15, 0x16, 0x78 }, /* 8e */
+	{ 0x7a, 0x15, 0x15, 0x16, 0x79 }, /* 8f */
+	{ 0x7c, 0x55, 0x56, 0x54, 0x44 }, /* 90 */
+	{ 0x7c, 0x56, 0x55, 0x46, 0x44 }, /* 91 */
+	{ 0x7c, 0x55, 0x54, 0x45, 0x44 }, /* 92 */
+	{ 0x00, 0x45, 0x7e, 0x44, 0x00 }, /* 93 */
+	{ 0x00, 0x44, 0x7e, 0x45, 0x00 }, /* 94 */
+	{ 0x08, 0x7f, 0x49, 0x22, 0x1c }, /* 95 */
+	{ 0x38, 0x45, 0x46, 0x44, 0x38 }, /* 96 */
+	{ 0x38, 0x44, 0x46, 0x45, 0x38 }, /* 97 */
+	{ 0x38, 0x46, 0x45, 0x46, 0x38 }, /* 98 */
+	{ 0x3a, 0x45, 0x45, 0x46, 0x39 }, /* 99 */
+	{ 0x3c, 0x41, 0x42, 0x40, 0x3c }, /* 9a */
+	{ 0x3c, 0x40, 0x42, 0x41, 0x3c }, /* 9b */
+	{ 0x20, 0x54, 0x56, 0x55, 0x78 }, /* 9c */
+	{ 0x20, 0x56, 0x55, 0x56, 0x78 }, /* 9d */
+	{ 0x22, 0x55, 0x55, 0x56, 0x79 }, /* 9e */
+	{ 0x38, 0x56, 0x55, 0x56, 0x18 }, /* 9f */
+	{ 0x38, 0x55, 0x54, 0x55, 0x18 }, /* a0 */
+	{ 0x00, 0x48, 0x7a, 0x41, 0x00 }, /* a1 */
+	{ 0x00, 0x4a, 0x79, 0x42, 0x00 }, /* a2 */
+	{ 0x00, 0x49, 0x78, 0x41, 0x00 }, /* a3 */
+	{ 0x30, 0x48, 0x4a, 0x49, 0x30 }, /* a4 */
+	{ 0x30, 0x4a, 0x49, 0x4a, 0x30 }, /* a5 */
+	{ 0x32, 0x49, 0x49, 0x4a, 0x31 }, /* a6 */
+	{ 0x38, 0x40, 0x42, 0x21, 0x78 }, /* a7 */
+	{ 0x18, 0x24, 0x67, 0x24, 0x24 }, /* a8 */
+	{ 0x00, 0x00, 0x00, 0x7f, 0x41 }, /* a9 */
+	{ 0x00, 0x7d, 0x0a, 0x05, 0x04 }, /* aa */
+	{ 0x38, 0x45, 0x46, 0x45, 0x44 }, /* ab */
+	{ 0x48, 0x55, 0x56, 0x55, 0x20 }, /* ac */
+	{ 0x38, 0x55, 0x56, 0x55, 0x18 }, /* ad */
+	{ 0x38, 0x42, 0x45, 0x22, 0x78 }, /* ae */
+	{ 0x0c, 0x50, 0x52, 0x51, 0x3c }, /* af */
+	{ 0x30, 0x4a, 0x4a, 0x7f, 0x02 }, /* b0 */
+	{ 0x38, 0x44, 0x46, 0x45, 0x44 }, /* b1 */
+	{ 0x0e, 0x15, 0x75, 0x55, 0x06 }, /* b2 */
+	{ 0x08, 0x15, 0x15, 0x75, 0x5e }, /* b3 */
+	{ 0x44, 0x64, 0x55, 0x4c, 0x44 }, /* b4 */
+	{ 0x44, 0x64, 0x56, 0x4d, 0x44 }, /* b5 */
+	{ 0x48, 0x54, 0x56, 0x55, 0x20 }, /* b6 */
+	{ 0x7c, 0x08, 0x06, 0x05, 0x78 }, /* b7 */
+	{ 0x00, 0x49, 0x7f, 0x44, 0x00 }, /* b8 */
+	{ 0x1c, 0x5e, 0x6f, 0x5e, 0x1c }, /* b9 */
+	{ 0x7c, 0x09, 0x06, 0x05, 0x78 }, /* ba */
+	{ 0x08, 0x3f, 0x48, 0x48, 0x03 }, /* bb */
+	{ 0x38, 0x44, 0x7f, 0x00, 0x03 }, /* bc */
+	{ 0x44, 0x65, 0x56, 0x4d, 0x44 }, /* bd */
+	{ 0x02, 0x01, 0x01, 0x01, 0x01 }, /* be */
+	{ 0x02, 0x01, 0x01, 0x01, 0x7d }, /* bf */
+	{ 0x41, 0x41, 0x41, 0x41, 0x42 }, /* c0 */
+	{ 0x39, 0x45, 0x55, 0x55, 0x31 }, /* c1 */
+	{ 0x09, 0x55, 0x55, 0x55, 0x3d }, /* c2 */
+	{ 0x02, 0x55, 0x75, 0x15, 0x08 }, /* c3 */
+	{ 0x04, 0x2a, 0x6a, 0x2a, 0x10 }, /* c4 */
+	{ 0x00, 0x44, 0x7d, 0x44, 0x00 }, /* c5 */
+	{ 0x00, 0x44, 0x7c, 0x40, 0x00 }, /* c6 */
+	{ 0x3c, 0x42, 0x41, 0x42, 0x3d }, /* c7 */
+	{ 0x3a, 0x45, 0x44, 0x46, 0x39 }, /* c8 */
+	{ 0x3a, 0x41, 0x40, 0x22, 0x79 }, /* c9 */
+	{ 0x32, 0x49, 0x48, 0x4a, 0x31 }, /* ca */
+	{ 0x20, 0x40, 0x40, 0x40, 0x5f }, /* cb */
+	{ 0x5f, 0x40, 0x40, 0x40, 0x20 }, /* cc */
+	{ 0x0e, 0x1e, 0x3c, 0x1e, 0x0e }, /* cd */
+	{ 0x41, 0x7f, 0x00, 0x00, 0x00 }, /* ce */
+	{ 0x32, 0x39, 0x25, 0x39, 0x32 }, /* cf */
+	{ 0x22, 0x41, 0x0e, 0x49, 0x2a }, /* d0 */
+	{ 0x42, 0x41, 0x41, 0x41, 0x41 }, /* d1 */
+	{ 0x1c, 0x14, 0x14, 0x22, 0x7f }, /* d2 */
+	{ 0x7e, 0x79, 0x49, 0x79, 0x7e }, /* d3 */
+	{ 0x00, 0x08, 0x30, 0x0c, 0x02 }, /* d4 */
+	{ 0x14, 0x36, 0x77, 0x36, 0x14 }, /* d5 */
+	{ 0x00, 0x7c, 0x7c, 0x7f, 0x00 }, /* d6 */
+	{ 0x7f, 0x7f, 0x00, 0x41, 0x41 }, /* d7 */
+	{ 0x41, 0x41, 0x00, 0x41, 0x41 }, /* d8 */
+	{ 0x00, 0x02, 0x5f, 0x62, 0x22 }, /* d9 */
+	{ 0x7f, 0x7f, 0x00, 0x7f, 0x7f }, /* da */
+	{ 0x08, 0x1c, 0x3e, 0x1c, 0x08 }, /* db */
+	{ 0x7c, 0x4c, 0x54, 0x4c, 0x7c }, /* dc */
+	{ 0x08, 0x7b, 0x3f, 0x7b, 0x08 }, /* dd */
+	{ 0x00, 0x50, 0x20, 0x50, 0x00 }, /* de */
+	{ 0x60, 0x60, 0x60, 0x60, 0x60 }, /* df */
+	{ 0x70, 0x70, 0x70, 0x70, 0x70 }, /* e0 */
+	{ 0x78, 0x78, 0x78, 0x78, 0x78 }, /* e1 */
+	{ 0x7c, 0x7c, 0x7c, 0x7c, 0x7c }, /* e2 */
+	{ 0x7e, 0x7e, 0x7e, 0x7e, 0x7e }, /* e3 */
+	{ 0x00, 0x00, 0x70, 0x08, 0x04 }, /* e4 */
+	{ 0x00, 0x3e, 0x41, 0x1c, 0x22 }, /* e5 */
+	{ 0x5e, 0x52, 0x72, 0x52, 0x5e }, /* e6 */
+	{ 0x20, 0x10, 0x0a, 0x06, 0x0e }, /* e7 */
+	{ 0x02, 0x04, 0x28, 0x30, 0x38 }, /* e8 */
+	{ 0x20, 0x55, 0x56, 0x56, 0x79 }, /* e9 */
+	{ 0x01, 0x01, 0x01, 0x01, 0x02 }, /* ea */
+	{ 0x04, 0x08, 0x70, 0x00, 0x00 }, /* eb */
+	{ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f }, /* ec */
+	{ 0x7f, 0x63, 0x55, 0x49, 0x51 }, /* ed */
+	{ 0x01, 0x01, 0x01, 0x01, 0x01 }, /* ee */
+	{ 0x7f, 0x01, 0x01, 0x01, 0x01 }, /* ef */
+	{ 0x70, 0x78, 0x6c, 0x06, 0x06 }, /* f0 */
+	{ 0x17, 0x15, 0x7d, 0x48, 0x48 }, /* f1 */
+	{ 0x52, 0x7a, 0x42, 0x06, 0x7c }, /* f2 */
+	{ 0x25, 0x35, 0x29, 0x01, 0x7e }, /* f3 */
+	{ 0x00, 0x00, 0x07, 0x08, 0x10 }, /* f4 */
+	{ 0x20, 0x40, 0x40, 0x40, 0x40 }, /* f5 */
+	{ 0x40, 0x40, 0x40, 0x40, 0x20 }, /* f6 */
+	{ 0x10, 0x08, 0x07, 0x00, 0x00 }, /* f7 */
+	{ 0x30, 0x48, 0x45, 0x43, 0x47 }, /* f8 */
+	{ 0x7c, 0x46, 0x67, 0x46, 0x7c }, /* f9 */
+	{ 0x55, 0x55, 0x41, 0x7f, 0x03 }, /* fa */
+	{ 0x1c, 0x36, 0x36, 0x36, 0x1c }, /* fb */
+	{ 0x60, 0x7c, 0x02, 0x31, 0x3f }, /* fc */
+	{ 0x51, 0x49, 0x55, 0x63, 0x7f }, /* fd */
+	{ 0x7f, 0x60, 0x60, 0x00, 0x00 }, /* fe */
+	{ 0x7f, 0x03, 0x03, 0x00, 0x00 }  /* ff */
+};
+unsigned char (*font_player)[256][5]=&font_new_player;
+
+void font_init()
+{
+  if (has_new_lcd())
+    font_player = &font_new_player;
+  else
+    font_player = &font_old_player;
+}
diff --git a/uisimulator/common/font-player.h b/uisimulator/common/font-player.h
index 5033681..99c45da 100644
--- a/uisimulator/common/font-player.h
+++ b/uisimulator/common/font-player.h
@@ -14,262 +14,8 @@
  * KIND, either express or implied.
  *
  ****************************************************************************/
-int font_player[256][5] = {
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 00 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 01 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 02 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 03 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 04 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 05 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 06 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 07 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 08 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 09 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0a */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0b */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0c */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0d */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0e */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0f */
-	{ 0x3e, 0x1c, 0x1c, 0x08, 0x08 }, /* 10 */
-	{ 0x08, 0x08, 0x1c, 0x1c, 0x3e }, /* 11 */
-	{ 0x02, 0x04, 0x08, 0x10, 0x20 }, /* 12 */
-	{ 0x00, 0x4f, 0x00, 0x4f, 0x00 }, /* 13 */
-	{ 0x06, 0x0f, 0x7f, 0x01, 0x7f }, /* 14 */
-	{ 0x48, 0x56, 0x55, 0x35, 0x09 }, /* 15 */
-	{ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c }, /* 16 */
-	{ 0x10, 0x38, 0x54, 0x10, 0x1f }, /* 17 */
-	{ 0x04, 0x02, 0x7f, 0x02, 0x04 }, /* 18 */
-	{ 0x10, 0x20, 0x7f, 0x20, 0x10 }, /* 19 */
-	{ 0x7f, 0x3e, 0x1c, 0x08, 0x7f }, /* 1a */
-	{ 0x7f, 0x08, 0x1c, 0x3e, 0x7f }, /* 1b */
-	{ 0x7f, 0x08, 0x2a, 0x1c, 0x08 }, /* 1c */
-	{ 0x08, 0x1c, 0x2a, 0x08, 0x7f }, /* 1d */
-	{ 0x02, 0x0e, 0x3e, 0x0e, 0x02 }, /* 1e */
-	{ 0x20, 0x38, 0x3e, 0x38, 0x20 }, /* 1f */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 20 */
-	{ 0x00, 0x00, 0x4f, 0x00, 0x00 }, /* 21 */
-	{ 0x00, 0x07, 0x00, 0x07, 0x00 }, /* 22 */
-	{ 0x14, 0x7f, 0x14, 0x7f, 0x14 }, /* 23 */
-	{ 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, /* 24 */
-	{ 0x23, 0x13, 0x08, 0x64, 0x62 }, /* 25 */
-	{ 0x36, 0x49, 0x55, 0x22, 0x50 }, /* 26 */
-	{ 0x00, 0x05, 0x03, 0x00, 0x00 }, /* 27 */
-	{ 0x00, 0x1c, 0x22, 0x41, 0x00 }, /* 28 */
-	{ 0x00, 0x41, 0x22, 0x1c, 0x00 }, /* 29 */
-	{ 0x14, 0x08, 0x3e, 0x08, 0x14 }, /* 2a */
-	{ 0x08, 0x08, 0x3e, 0x08, 0x08 }, /* 2b */
-	{ 0x00, 0x50, 0x30, 0x00, 0x00 }, /* 2c */
-	{ 0x08, 0x08, 0x08, 0x08, 0x08 }, /* 2d */
-	{ 0x00, 0x30, 0x30, 0x00, 0x00 }, /* 2e */
-	{ 0x20, 0x10, 0x08, 0x04, 0x02 }, /* 2f */
-	{ 0x3e, 0x51, 0x49, 0x45, 0x3e }, /* 30 */
-	{ 0x00, 0x42, 0x7f, 0x40, 0x00 }, /* 31 */
-	{ 0x42, 0x61, 0x51, 0x49, 0x46 }, /* 32 */
-	{ 0x21, 0x41, 0x45, 0x4b, 0x31 }, /* 33 */
-	{ 0x18, 0x14, 0x12, 0x7f, 0x10 }, /* 34 */
-	{ 0x27, 0x45, 0x45, 0x45, 0x39 }, /* 35 */
-	{ 0x3c, 0x4a, 0x49, 0x49, 0x30 }, /* 36 */
-	{ 0x01, 0x01, 0x71, 0x0d, 0x03 }, /* 37 */
-	{ 0x36, 0x49, 0x49, 0x49, 0x36 }, /* 38 */
-	{ 0x06, 0x49, 0x49, 0x29, 0x1e }, /* 39 */
-	{ 0x00, 0x36, 0x36, 0x00, 0x00 }, /* 3a */
-	{ 0x00, 0x5b, 0x3b, 0x00, 0x00 }, /* 3b */
-	{ 0x08, 0x14, 0x22, 0x41, 0x00 }, /* 3c */
-	{ 0x14, 0x14, 0x14, 0x14, 0x14 }, /* 3d */
-	{ 0x00, 0x41, 0x22, 0x14, 0x08 }, /* 3e */
-	{ 0x02, 0x01, 0x51, 0x09, 0x06 }, /* 3f */
-	{ 0x32, 0x49, 0x79, 0x41, 0x3e }, /* 40 */
-	{ 0x7e, 0x11, 0x11, 0x11, 0x7e }, /* 41 */
-	{ 0x7f, 0x49, 0x49, 0x49, 0x36 }, /* 42 */
-	{ 0x3e, 0x41, 0x41, 0x41, 0x22 }, /* 43 */
-	{ 0x7f, 0x41, 0x41, 0x22, 0x1c }, /* 44 */
-	{ 0x7f, 0x49, 0x49, 0x49, 0x41 }, /* 45 */
-	{ 0x7f, 0x09, 0x09, 0x09, 0x01 }, /* 46 */
-	{ 0x3e, 0x41, 0x49, 0x49, 0x7a }, /* 47 */
-	{ 0x7f, 0x08, 0x08, 0x08, 0x7f }, /* 48 */
-	{ 0x00, 0x41, 0x7f, 0x41, 0x00 }, /* 49 */
-	{ 0x20, 0x41, 0x41, 0x3f, 0x01 }, /* 4a */
-	{ 0x7f, 0x08, 0x14, 0x22, 0x41 }, /* 4b */
-	{ 0x7f, 0x40, 0x40, 0x40, 0x40 }, /* 4c */
-	{ 0x7f, 0x02, 0x0c, 0x02, 0x7f }, /* 4d */
-	{ 0x7f, 0x04, 0x08, 0x10, 0x7f }, /* 4e */
-	{ 0x3e, 0x41, 0x41, 0x41, 0x3e }, /* 4f */
-	{ 0x7f, 0x09, 0x09, 0x09, 0x06 }, /* 50 */
-	{ 0x3e, 0x41, 0x41, 0x21, 0x5e }, /* 51 */
-	{ 0x7f, 0x09, 0x19, 0x29, 0x46 }, /* 52 */
-	{ 0x26, 0x49, 0x49, 0x49, 0x32 }, /* 53 */
-	{ 0x01, 0x01, 0x7f, 0x01, 0x01 }, /* 54 */
-	{ 0x3f, 0x40, 0x40, 0x40, 0x3f }, /* 55 */
-	{ 0x1f, 0x20, 0x40, 0x20, 0x1f }, /* 56 */
-	{ 0x3f, 0x40, 0x38, 0x40, 0x3f }, /* 57 */
-	{ 0x63, 0x14, 0x08, 0x14, 0x63 }, /* 58 */
-	{ 0x03, 0x04, 0x78, 0x04, 0x03 }, /* 59 */
-	{ 0x61, 0x51, 0x49, 0x45, 0x43 }, /* 5a */
-	{ 0x00, 0x7f, 0x41, 0x41, 0x00 }, /* 5b */
-	{ 0x15, 0x16, 0x7c, 0x16, 0x15 }, /* 5c */
-	{ 0x00, 0x41, 0x41, 0x7f, 0x00 }, /* 5d */
-	{ 0x04, 0x02, 0x01, 0x02, 0x04 }, /* 5e */
-	{ 0x40, 0x40, 0x40, 0x40, 0x40 }, /* 5f */
-	{ 0x00, 0x01, 0x02, 0x04, 0x00 }, /* 60 */
-	{ 0x20, 0x54, 0x54, 0x54, 0x78 }, /* 61 */
-	{ 0x7f, 0x48, 0x44, 0x44, 0x38 }, /* 62 */
-	{ 0x38, 0x44, 0x44, 0x44, 0x20 }, /* 63 */
-	{ 0x38, 0x44, 0x44, 0x48, 0x7f }, /* 64 */
-	{ 0x38, 0x54, 0x54, 0x54, 0x18 }, /* 65 */
-	{ 0x08, 0x7e, 0x09, 0x01, 0x02 }, /* 66 */
-	{ 0x0c, 0x52, 0x52, 0x52, 0x3e }, /* 67 */
-	{ 0x7f, 0x08, 0x04, 0x04, 0x78 }, /* 68 */
-	{ 0x00, 0x44, 0x7d, 0x40, 0x00 }, /* 69 */
-	{ 0x20, 0x40, 0x44, 0x3d, 0x00 }, /* 6a */
-	{ 0x7f, 0x10, 0x28, 0x44, 0x00 }, /* 6b */
-	{ 0x00, 0x41, 0x7f, 0x40, 0x00 }, /* 6c */
-	{ 0x7c, 0x04, 0x18, 0x04, 0x78 }, /* 6d */
-	{ 0x7c, 0x08, 0x04, 0x04, 0x78 }, /* 6e */
-	{ 0x38, 0x44, 0x44, 0x44, 0x38 }, /* 6f */
-	{ 0x7c, 0x14, 0x14, 0x14, 0x08 }, /* 70 */
-	{ 0x08, 0x14, 0x14, 0x18, 0x7c }, /* 71 */
-	{ 0x7c, 0x08, 0x04, 0x04, 0x08 }, /* 72 */
-	{ 0x48, 0x54, 0x54, 0x54, 0x20 }, /* 73 */
-	{ 0x04, 0x3f, 0x44, 0x40, 0x20 }, /* 74 */
-	{ 0x3c, 0x40, 0x40, 0x20, 0x7c }, /* 75 */
-	{ 0x1c, 0x20, 0x40, 0x20, 0x1c }, /* 76 */
-	{ 0x3c, 0x40, 0x30, 0x40, 0x3c }, /* 77 */
-	{ 0x44, 0x28, 0x10, 0x28, 0x44 }, /* 78 */
-	{ 0x4c, 0x50, 0x50, 0x50, 0x3c }, /* 79 */
-	{ 0x44, 0x64, 0x54, 0x4c, 0x44 }, /* 7a */
-	{ 0x00, 0x08, 0x36, 0x41, 0x00 }, /* 7b */
-	{ 0x00, 0x00, 0x7f, 0x00, 0x00 }, /* 7c */
-	{ 0x00, 0x41, 0x36, 0x08, 0x00 }, /* 7d */
-	{ 0x08, 0x08, 0x2a, 0x1c, 0x08 }, /* 7e */
-	{ 0x08, 0x1c, 0x2a, 0x08, 0x08 }, /* 7f */
-	{ 0x40, 0x40, 0x40, 0x40, 0x40 }, /* 80 */
-	{ 0x60, 0x60, 0x60, 0x60, 0x60 }, /* 81 */
-	{ 0x70, 0x70, 0x70, 0x70, 0x70 }, /* 82 */
-	{ 0x78, 0x78, 0x78, 0x78, 0x78 }, /* 83 */
-	{ 0x7c, 0x7c, 0x7c, 0x7c, 0x7c }, /* 84 */
-	{ 0x7e, 0x7e, 0x7e, 0x7e, 0x7e }, /* 85 */
-	{ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f }, /* 86 */
-	{ 0x08, 0x2a, 0x1c, 0x2a, 0x08 }, /* 87 */
-	{ 0x7f, 0x00, 0x00, 0x00, 0x7f }, /* 88 */
-	{ 0x7f, 0x7f, 0x00, 0x00, 0x7f }, /* 89 */
-	{ 0x7f, 0x7f, 0x7f, 0x00, 0x7f }, /* 8a */
-	{ 0x00, 0x7f, 0x00, 0x00, 0x00 }, /* 8b */
-	{ 0x00, 0x7f, 0x7f, 0x00, 0x00 }, /* 8c */
-	{ 0x00, 0x7f, 0x7f, 0x7f, 0x00 }, /* 8d */
-	{ 0x00, 0x7f, 0x7f, 0x7f, 0x7f }, /* 8e */
-	{ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e }, /* 8f */
-	{ 0x1c, 0x3e, 0x3e, 0x3e, 0x1c }, /* 90 */
-	{ 0x7f, 0x41, 0x41, 0x41, 0x7f }, /* 91 */
-	{ 0x7f, 0x5b, 0x41, 0x5f, 0x7f }, /* 92 */
-	{ 0x7f, 0x4d, 0x55, 0x59, 0x7f }, /* 93 */
-	{ 0x20, 0x40, 0x3c, 0x04, 0x04 }, /* 94 */
-	{ 0x44, 0x44, 0x5f, 0x44, 0x44 }, /* 95 */
-	{ 0x22, 0x14, 0x08, 0x14, 0x22 }, /* 96 */
-	{ 0x08, 0x08, 0x2a, 0x08, 0x08 }, /* 97 */
-	{ 0x45, 0x29, 0x11, 0x29, 0x45 }, /* 98 */
-	{ 0x1d, 0x15, 0x17, 0x00, 0x00 }, /* 99 */
-	{ 0x15, 0x15, 0x1f, 0x00, 0x00 }, /* 9a */
-	{ 0x17, 0x08, 0x74, 0x56, 0x5d }, /* 9b */
-	{ 0x17, 0x08, 0x24, 0x32, 0x79 }, /* 9c */
-	{ 0x35, 0x1f, 0x28, 0x34, 0x7a }, /* 9d */
-	{ 0x08, 0x14, 0x2a, 0x14, 0x22 }, /* 9e */
-	{ 0x22, 0x14, 0x2a, 0x14, 0x08 }, /* 9f */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* a0 */
-	{ 0x70, 0x50, 0x70, 0x00, 0x00 }, /* a1 */
-	{ 0x00, 0x00, 0x0f, 0x01, 0x01 }, /* a2 */
-	{ 0x40, 0x40, 0x78, 0x00, 0x00 }, /* a3 */
-	{ 0x10, 0x20, 0x40, 0x00, 0x00 }, /* a4 */
-	{ 0x00, 0x18, 0x18, 0x00, 0x00 }, /* a5 */
-	{ 0x0a, 0x0a, 0x4a, 0x2a, 0x1e }, /* a6 */
-	{ 0x04, 0x44, 0x34, 0x14, 0x0c }, /* a7 */
-	{ 0x20, 0x10, 0x78, 0x04, 0x00 }, /* a8 */
-	{ 0x18, 0x08, 0x4c, 0x48, 0x38 }, /* a9 */
-	{ 0x48, 0x48, 0x78, 0x48, 0x48 }, /* aa */
-	{ 0x48, 0x28, 0x18, 0x7c, 0x08 }, /* ab */
-	{ 0x08, 0x7c, 0x08, 0x28, 0x18 }, /* ac */
-	{ 0x40, 0x48, 0x48, 0x78, 0x40 }, /* ad */
-	{ 0x54, 0x54, 0x54, 0x7c, 0x00 }, /* ae */
-	{ 0x18, 0x00, 0x58, 0x40, 0x38 }, /* af */
-	{ 0x08, 0x08, 0x08, 0x08, 0x08 }, /* b0 */
-	{ 0x01, 0x41, 0x3d, 0x09, 0x07 }, /* b1 */
-	{ 0x10, 0x08, 0x7c, 0x02, 0x01 }, /* b2 */
-	{ 0x0e, 0x02, 0x43, 0x22, 0x1e }, /* b3 */
-	{ 0x42, 0x42, 0x7e, 0x42, 0x42 }, /* b4 */
-	{ 0x22, 0x12, 0x0a, 0x7f, 0x02 }, /* b5 */
-	{ 0x42, 0x3f, 0x02, 0x42, 0x3e }, /* b6 */
-	{ 0x0a, 0x0a, 0x7f, 0x0a, 0x0a }, /* b7 */
-	{ 0x08, 0x46, 0x42, 0x22, 0x1e }, /* b8 */
-	{ 0x04, 0x03, 0x42, 0x3e, 0x02 }, /* b9 */
-	{ 0x42, 0x42, 0x42, 0x42, 0x7e }, /* ba */
-	{ 0x02, 0x07, 0x42, 0x3f, 0x02 }, /* bb */
-	{ 0x4a, 0x4a, 0x40, 0x20, 0x10 }, /* bc */
-	{ 0x42, 0x22, 0x12, 0x2a, 0x46 }, /* bd */
-	{ 0x02, 0x3f, 0x42, 0x4a, 0x46 }, /* be */
-	{ 0x06, 0x48, 0x40, 0x20, 0x1e }, /* bf */
-	{ 0x08, 0x46, 0x4a, 0x32, 0x1e }, /* c0 */
-	{ 0x0a, 0x4a, 0x3e, 0x09, 0x08 }, /* c1 */
-	{ 0x0e, 0x00, 0x4e, 0x20, 0x1e }, /* c2 */
-	{ 0x04, 0x45, 0x3d, 0x05, 0x04 }, /* c3 */
-	{ 0x00, 0x7f, 0x08, 0x10, 0x00 }, /* c4 */
-	{ 0x44, 0x24, 0x1f, 0x04, 0x04 }, /* c5 */
-	{ 0x40, 0x42, 0x42, 0x42, 0x40 }, /* c6 */
-	{ 0x42, 0x2a, 0x12, 0x2a, 0x06 }, /* c7 */
-	{ 0x22, 0x12, 0x7b, 0x16, 0x22 }, /* c8 */
-	{ 0x00, 0x40, 0x20, 0x1f, 0x00 }, /* c9 */
-	{ 0x78, 0x00, 0x02, 0x04, 0x78 }, /* ca */
-	{ 0x3f, 0x44, 0x44, 0x44, 0x44 }, /* cb */
-	{ 0x02, 0x42, 0x42, 0x22, 0x1e }, /* cc */
-	{ 0x04, 0x02, 0x04, 0x08, 0x30 }, /* cd */
-	{ 0x32, 0x02, 0x7f, 0x02, 0x32 }, /* ce */
-	{ 0x02, 0x12, 0x22, 0x52, 0x0e }, /* cf */
-	{ 0x00, 0x2a, 0x2a, 0x2a, 0x40 }, /* d0 */
-	{ 0x38, 0x24, 0x22, 0x20, 0x70 }, /* d1 */
-	{ 0x40, 0x28, 0x10, 0x28, 0x06 }, /* d2 */
-	{ 0x0a, 0x3e, 0x4a, 0x4a, 0x4a }, /* d3 */
-	{ 0x04, 0x7f, 0x04, 0x14, 0x0c }, /* d4 */
-	{ 0x40, 0x42, 0x42, 0x7e, 0x40 }, /* d5 */
-	{ 0x4a, 0x4a, 0x4a, 0x4a, 0x7e }, /* d6 */
-	{ 0x04, 0x05, 0x45, 0x25, 0x1c }, /* d7 */
-	{ 0x1f, 0x40, 0x20, 0x1f, 0x00 }, /* d8 */
-	{ 0x7c, 0x00, 0x7e, 0x40, 0x30 }, /* d9 */
-	{ 0x7e, 0x40, 0x20, 0x10, 0x08 }, /* da */
-	{ 0x7f, 0x41, 0x41, 0x41, 0x7f }, /* db */
-	{ 0x0e, 0x02, 0x42, 0x22, 0x1e }, /* dc */
-	{ 0x42, 0x42, 0x40, 0x20, 0x18 }, /* dd */
-	{ 0x02, 0x04, 0x01, 0x02, 0x00 }, /* de */
-	{ 0x07, 0x05, 0x07, 0x00, 0x00 }, /* df */
-	{ 0x38, 0x44, 0x48, 0x30, 0x4c }, /* e0 */
-	{ 0x7c, 0x2a, 0x2a, 0x2a, 0x14 }, /* e1 */
-	{ 0x02, 0x4c, 0x30, 0x0c, 0x02 }, /* e2 */
-	{ 0x44, 0x3c, 0x04, 0x7c, 0x44 }, /* e3 */
-	{ 0x63, 0x55, 0x49, 0x41, 0x41 }, /* e4 */
-	{ 0x38, 0x44, 0x4c, 0x54, 0x24 }, /* e5 */
-	{ 0x40, 0x3e, 0x10, 0x10, 0x1e }, /* e6 */
-	{ 0x04, 0x04, 0x3c, 0x44, 0x44 }, /* e7 */
-	{ 0x49, 0x55, 0x7f, 0x55, 0x49 }, /* e8 */
-	{ 0x3c, 0x4a, 0x4a, 0x4a, 0x3c }, /* e9 */
-	{ 0x58, 0x64, 0x04, 0x64, 0x58 }, /* ea */
-	{ 0x3a, 0x45, 0x45, 0x45, 0x39 }, /* eb */
-	{ 0x60, 0x50, 0x20, 0x50, 0x30 }, /* ec */
-	{ 0x08, 0x54, 0x3e, 0x15, 0x08 }, /* ed */
-	{ 0x14, 0x2a, 0x2a, 0x2a, 0x00 }, /* ee */
-	{ 0x7c, 0x0a, 0x09, 0x09, 0x06 }, /* ef */
-	{ 0x08, 0x04, 0x08, 0x10, 0x08 }, /* f0 */
-	{ 0x14, 0x0a, 0x14, 0x28, 0x14 }, /* f1 */
-	{ 0x24, 0x3b, 0x2a, 0x7e, 0x2a }, /* f2 */
-	{ 0x40, 0x3f, 0x15, 0x15, 0x7f }, /* f3 */
-	{ 0x46, 0x20, 0x1f, 0x20, 0x46 }, /* f4 */
-	{ 0x24, 0x14, 0x7f, 0x18, 0x24 }, /* f5 */
-	{ 0x24, 0x14, 0x7f, 0x14, 0x24 }, /* f6 */
-	{ 0x44, 0x6a, 0x79, 0x6a, 0x44 }, /* f7 */
-	{ 0x40, 0x44, 0x7f, 0x44, 0x40 }, /* f8 */
-	{ 0x7f, 0x49, 0x49, 0x49, 0x7f }, /* f9 */
-	{ 0x14, 0x14, 0x7c, 0x14, 0x12 }, /* fa */
-	{ 0x44, 0x3c, 0x14, 0x14, 0x74 }, /* fb */
-	{ 0x7c, 0x14, 0x1c, 0x14, 0x7c }, /* fc */
-	{ 0x2a, 0x55, 0x2a, 0x55, 0x2a }, /* fd */
-	{ 0x55, 0x2a, 0x55, 0x2a, 0x55 }, /* fe */
-	{ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f }  /* ff */
-};
+
+extern unsigned char (*font_player)[256][5];
+
+void font_init();
 
diff --git a/uisimulator/common/lcd-playersim.c b/uisimulator/common/lcd-playersim.c
index a804cc4..7c9685c 100644
--- a/uisimulator/common/lcd-playersim.c
+++ b/uisimulator/common/lcd-playersim.c
@@ -29,74 +29,114 @@
 #include "system.h"
 
 #include "font-player.h"
+#include "lcd-playersim.h"
 
 /*** definitions ***/
 
 #define CHAR_WIDTH 6
 #define CHAR_HEIGHT 8
-#define ICON_HEIGHT 10
+#define ICON_HEIGHT 24
+#define CHAR_PIXEL 4
+#define BORDER_MARGIN 1
 
-unsigned char lcd_framebuffer[LCD_WIDTH][LCD_HEIGHT/8];
+unsigned char lcd_buffer[2][11];
 
 static int double_height=1;
+extern bool lcd_display_redraw;
+extern unsigned const char *lcd_ascii;
+
 
 void lcd_print_icon(int x, int icon_line, bool enable, char **icon)
 {
   int xpos = x;
   int ypos = icon_line*(ICON_HEIGHT+CHAR_HEIGHT*2);
   int row=0, col;
+
+  int p=0, cp=0;
+  struct coordinate points[LCD_WIDTH * LCD_HEIGHT];
+  struct coordinate clearpoints[LCD_WIDTH * LCD_HEIGHT];
   
   while (icon[row]) {
     col=0;
     while (icon[row][col]) {
-      lcd_framebuffer[xpos+col][(ypos+row)/8] &= ~(1<<((row+ypos)&7));
-      if (enable) {
-	if (icon[row][col]=='*') {
-	  lcd_framebuffer[xpos+col][(ypos+row)/8] |= 1<<((row+ypos)&7);
-	}
+      switch(icon[row][col]) {
+      case '*':
+        if (enable) {
+          /* set a dot */
+          points[p].x = xpos + col +BORDER_MARGIN;
+          points[p].y = ypos+row +BORDER_MARGIN;
+          p++; /* increase the point counter */
+        } else {
+          /* clear a dot */
+          clearpoints[cp].x = xpos + col +BORDER_MARGIN;
+          clearpoints[cp].y = ypos+row +BORDER_MARGIN;
+          cp++; /* increase the point counter */
+        }
+        break;
+      case ' ': /* Clear bit */
+        /* clear a dot */
+        clearpoints[cp].x = xpos + col+BORDER_MARGIN;
+        clearpoints[cp].y = ypos+row+BORDER_MARGIN;
+        cp++; /* increase the point counter */
+        break;
       }
       col++;
     }
     row++;
   }
-  lcd_update();
+  drawdots(0, &clearpoints[0], cp);
+  drawdots(1, &points[0], p);
 }
 
-void lcd_print_char(int x, int y, unsigned char ch)
+void lcd_print_char(int x, int y)
 {
-  int xpos = x * CHAR_WIDTH;
-  int ypos = y * CHAR_HEIGHT;
+  int xpos = x * CHAR_WIDTH * CHAR_PIXEL;
+  int ypos = y * CHAR_HEIGHT * CHAR_PIXEL + ICON_HEIGHT;
   int col, row;
-  int y2;
-  //  double_height=2;
+  int p=0, cp=0;
+  struct rectangle points[CHAR_HEIGHT*CHAR_WIDTH];
+  struct rectangle clearpoints[CHAR_HEIGHT*CHAR_WIDTH];
+  unsigned char ch=lcd_buffer[y][x];
+
   if (double_height == 2 && y == 1)
     return; /* Second row can't be printed in double height. ??*/
 
-  xpos*=2;
-
-  /*  printf("(%d,%d)='%d'\n", x, y, ch);*/
+  /* Clear all char
+  clearpoints[cp].x = xpos +BORDER_MARGIN;
+  clearpoints[cp].y = ypos +BORDER_MARGIN;
+  clearpoints[cp].width=CHAR_WIDTH*CHAR_PIXEL;
+  clearpoints[cp].height=7*CHAR_PIXEL*double_height;
+  cp++;
+  */
   for (col=0; col<5; col++) {
     for (row=0; row<7; row++) {
-      for (y2=0; y2<double_height*2; y2++) {
-	int y;
-	unsigned char bitval;
+      char fontbit=(*font_player)[ch][col]&(1<<row);
+      int height=CHAR_PIXEL*double_height;
 
-	if (double_height*row >=7)
-	  y2+=double_height;
-	y=y2+double_height*2*row+2*ypos+ICON_HEIGHT;
+      y=CHAR_PIXEL*(double_height*row)+ypos;
+      if (double_height==2) {
+	if (row == 3) /* Adjust for blank row in the middle */
+	  height=CHAR_PIXEL;
+      }
 
-	bitval=3<<((y&6));
-	if (font_player[ch][col]&(1<<row)) {
-	  lcd_framebuffer[xpos+col*2][y/8] |= bitval;
-	  
-	} else {
-	  lcd_framebuffer[xpos+col*2][y/8] &= ~bitval;
-	}
-	lcd_framebuffer[xpos+col*2+1][y/8] = 
-	  lcd_framebuffer[xpos+col*2][y/8];
+      if (fontbit) {
+        /* set a dot */
+        points[p].x = xpos + col*CHAR_PIXEL +BORDER_MARGIN;
+        points[p].y = y +BORDER_MARGIN;
+        points[p].width=CHAR_PIXEL;
+        points[p].height=height;
+        p++; /* increase the point counter */
+      } else {
+        clearpoints[cp].x = xpos + col*CHAR_PIXEL +BORDER_MARGIN;
+        clearpoints[cp].y = y +BORDER_MARGIN;
+        clearpoints[cp].width=CHAR_PIXEL;
+        clearpoints[cp].height=height;
+        cp++;
       }
     }
   }
+  drawrectangles(0, &clearpoints[0], cp);
+  drawrectangles(1, &points[0], p);
 }
 
 
@@ -106,189 +146,35 @@
  */
 void lcd_drawrect (int x, int y, int nx, int ny)
 {
-    int i;
-
-    if (x > LCD_WIDTH)
-        return;
-    if (y > LCD_HEIGHT)
-        return;
-
-    if (x + nx > LCD_WIDTH)
-        nx = LCD_WIDTH - x;
-    if (y + ny > LCD_HEIGHT)
-        ny = LCD_HEIGHT - y;
-
-    /* vertical lines */
-    for (i = 0; i < ny; i++) {
-        DRAW_PIXEL(x, (y + i));
-        DRAW_PIXEL((x + nx - 1), (y + i));
-    }
-
-    /* horizontal lines */
-    for (i = 0; i < nx; i++) {
-        DRAW_PIXEL((x + i),y);
-        DRAW_PIXEL((x + i),(y + ny - 1));
-    }
+    (void)x;
+    (void)y;
+    (void)nx;
+    (void)ny;
 }
 
 /* Invert a rectangular area at (x, y), size (nx, ny) */
 void lcd_invertrect (int x, int y, int nx, int ny)
 {
-    int i, j;
-
-    if (x > LCD_WIDTH)
-        return;
-    if (y > LCD_HEIGHT)
-        return;
-
-    if (x + nx > LCD_WIDTH)
-        nx = LCD_WIDTH - x;
-    if (y + ny > LCD_HEIGHT)
-        ny = LCD_HEIGHT - y;
-
-    for (i = 0; i < nx; i++)
-        for (j = 0; j < ny; j++)
-            INVERT_PIXEL((x + i), (y + j));
+    (void)x;
+    (void)y;
+    (void)nx;
+    (void)ny;
 }
 
 void lcd_drawline( int x1, int y1, int x2, int y2 )
 {
-    int numpixels;
-    int i;
-    int deltax, deltay;
-    int d, dinc1, dinc2;
-    int x, xinc1, xinc2;
-    int y, yinc1, yinc2;
-
-    deltax = abs(x2 - x1);
-    deltay = abs(y2 - y1);
-
-    if(deltax >= deltay)
-    {
-        numpixels = deltax;
-        d = 2 * deltay - deltax;
-        dinc1 = deltay * 2;
-        dinc2 = (deltay - deltax) * 2;
-        xinc1 = 1;
-        xinc2 = 1;
-        yinc1 = 0;
-        yinc2 = 1;
-    }
-    else
-    {
-        numpixels = deltay;
-        d = 2 * deltax - deltay;
-        dinc1 = deltax * 2;
-        dinc2 = (deltax - deltay) * 2;
-        xinc1 = 0;
-        xinc2 = 1;
-        yinc1 = 1;
-        yinc2 = 1;
-    }
-    numpixels++; /* include endpoints */
-
-    if(x1 > x2)
-    {
-        xinc1 = -xinc1;
-        xinc2 = -xinc2;
-    }
-
-    if(y1 > y2)
-    {
-        yinc1 = -yinc1;
-        yinc2 = -yinc2;
-    }
-
-    x = x1;
-    y = y1;
-
-    for(i=0; i<numpixels; i++)
-    {
-        DRAW_PIXEL(x,y);
-
-        if(d < 0)
-        {
-            d += dinc1;
-            x += xinc1;
-            y += yinc1;
-        }
-        else
-        {
-            d += dinc2;
-            x += xinc2;
-            y += yinc2;
-        }
-    }
+    (void)x1;
+    (void)x2;
+    (void)y1;
+    (void)y2;
 }
 
 void lcd_clearline( int x1, int y1, int x2, int y2 )
 {
-    int numpixels;
-    int i;
-    int deltax, deltay;
-    int d, dinc1, dinc2;
-    int x, xinc1, xinc2;
-    int y, yinc1, yinc2;
-
-    deltax = abs(x2 - x1);
-    deltay = abs(y2 - y1);
-
-    if(deltax >= deltay)
-    {
-        numpixels = deltax;
-        d = 2 * deltay - deltax;
-        dinc1 = deltay * 2;
-        dinc2 = (deltay - deltax) * 2;
-        xinc1 = 1;
-        xinc2 = 1;
-        yinc1 = 0;
-        yinc2 = 1;
-    }
-    else
-    {
-        numpixels = deltay;
-        d = 2 * deltax - deltay;
-        dinc1 = deltax * 2;
-        dinc2 = (deltax - deltay) * 2;
-        xinc1 = 0;
-        xinc2 = 1;
-        yinc1 = 1;
-        yinc2 = 1;
-    }
-    numpixels++; /* include endpoints */
-
-    if(x1 > x2)
-    {
-        xinc1 = -xinc1;
-        xinc2 = -xinc2;
-    }
-
-    if(y1 > y2)
-    {
-        yinc1 = -yinc1;
-        yinc2 = -yinc2;
-    }
-
-    x = x1;
-    y = y1;
-
-    for(i=0; i<numpixels; i++)
-    {
-        CLEAR_PIXEL(x,y);
-
-        if(d < 0)
-        {
-            d += dinc1;
-            x += xinc1;
-            y += yinc1;
-        }
-        else
-        {
-            d += dinc2;
-            x += xinc2;
-            y += yinc2;
-        }
-    }
+    (void)x1;
+    (void)x2;
+    (void)y1;
+    (void)y2;
 }
 
 /*
@@ -296,7 +182,8 @@
  */
 void lcd_drawpixel(int x, int y)
 {
-    DRAW_PIXEL(x,y);
+    (void)x;
+    (void)y;
 }
 
 /*
@@ -304,7 +191,8 @@
  */
 void lcd_clearpixel(int x, int y)
 {
-    CLEAR_PIXEL(x,y);
+    (void)x;
+    (void)y;
 }
 
 /*
@@ -312,21 +200,28 @@
  */
 void lcd_invertpixel(int x, int y)
 {
-    INVERT_PIXEL(x,y);
+    (void)x;
+    (void)y;
 }
 
 void lcd_clear_display(void)
 {
-    memset (lcd_framebuffer, 0, sizeof lcd_framebuffer);
+    int x, y;
+    for (y=0; y<2; y++) {
+      for (x=0; x<11; x++) {
+        lcd_buffer[y][x++]=lcd_ascii[' '];
+      }
+    }
+    lcd_update();
 }
 
 void lcd_puts(int x, int y, unsigned char *str)
 {
     int i;
     for (i=0; *str && x<11; i++)
-        lcd_print_char(x++, y, *str++);
+        lcd_buffer[y][x++]=lcd_ascii[*str++];
     for (; x<11; x++)
-        lcd_print_char(x, y, ' ');
+        lcd_buffer[y][x]=lcd_ascii[' '];
     lcd_update();
 }
 
@@ -353,14 +248,16 @@
     }
     for (i = 1; i <= 5; i++)
     {
-        font_player[pat][i-1] = icon[i];
+        (*font_player)[pat][i-1] = icon[i];
     }
+    lcd_display_redraw=true;
+    lcd_update();
 }
 
 extern void lcd_puts(int x, int y, unsigned char *str);
 
 void lcd_putc(int x, int y, unsigned char ch)
 {
-    lcd_print_char(x, y, ch);
+    lcd_buffer[y][x]=lcd_ascii[ch];
     lcd_update();
 }
diff --git a/uisimulator/common/stubs.c b/uisimulator/common/stubs.c
index 89e3cea..9b62882 100644
--- a/uisimulator/common/stubs.c
+++ b/uisimulator/common/stubs.c
@@ -29,6 +29,9 @@
 #include "string.h"
 #include "lcd.h"
 
+extern char having_new_lcd;
+
+
 void backlight_on(void)
 {
   /* we could do something better here! */
@@ -163,7 +166,7 @@
 
 bool has_new_lcd(void)
 {
-    return false;
+    return having_new_lcd;
 }
 
 void lcd_set_contrast( int x )