[gens-sdl] OsdFont_C64.cpp: Added more symbols.
authorDavid Korth <gerbilsoft@gerbilsoft.com>
Sat, 19 Sep 2015 13:27:43 +0000 (09:27 -0400)
committerDavid Korth <gerbilsoft@gerbilsoft.com>
Sat, 19 Sep 2015 13:27:43 +0000 (09:27 -0400)
src/gens-sdl/OsdFont_C64.cpp

index 6f7c593..8968217 100644 (file)
@@ -17,6 +17,7 @@ namespace GensSdl {
 
 // ISO-8859-1, with extra cp437 characters in control code positions.
 // TODO: Add more symbols.
+// TODO: Add comments indicating what each character is.
 static const uint8_t C64_charset_ASCII[256][8] = {
        // 0x0000 [cp437]
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
@@ -41,16 +42,16 @@ static const uint8_t C64_charset_ASCII[256][8] = {
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x66, 0x00},
+       {0x3E, 0x6A, 0x6A, 0x3E, 0x0A, 0x0A, 0x0A, 0x00}, // Based on C64 'P'
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+       {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF},
+       {0x00, 0x18, 0x3C, 0x18, 0x18, 0x3C, 0x18, 0x7E}, // Based on C64 '↑' and '↓'
        {0x00, 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x18},
        {0x00, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18},
        {0x00, 0x04, 0x06, 0x7F, 0x7F, 0x06, 0x04, 0x00},
        {0x00, 0x10, 0x30, 0x7F, 0x7F, 0x30, 0x10, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+       {0x00, 0x14, 0x36, 0x7F, 0x7F, 0x36, 0x14, 0x00}, // Based on C64 '←' and '→' [TODO: Needs improvement.]
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 
@@ -124,11 +125,11 @@ static const uint8_t C64_charset_ASCII[256][8] = {
        {0x3C, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3C, 0x00},
        {0x00, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x00},
        {0x3C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x3C, 0x00},
-       {0x00, 0x18, 0x24, 0x42, 0x00, 0x00, 0x00, 0x00}, // (based on C64 '↑')
+       {0x00, 0x18, 0x24, 0x42, 0x00, 0x00, 0x00, 0x00}, // Based on C64 '↑'
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF},
 
        // 0x0060
-       {0x60, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // (based on C64 '\'')
+       {0x60, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // Based on C64 '\''
        {0x00, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00},
        {0x00, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x00},
        {0x00, 0x00, 0x3C, 0x60, 0x60, 0x60, 0x3C, 0x00},
@@ -157,10 +158,10 @@ static const uint8_t C64_charset_ASCII[256][8] = {
        {0x00, 0x00, 0x66, 0x3C, 0x18, 0x3C, 0x66, 0x00},
        {0x00, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x0C, 0x78},
        {0x00, 0x00, 0x7E, 0x0C, 0x18, 0x30, 0x7E, 0x00},
-       {0x1C, 0x30, 0x30, 0x60, 0x30, 0x30, 0x1C, 0x00}, // (based on C64 '[')
+       {0x1C, 0x30, 0x30, 0x60, 0x30, 0x30, 0x1C, 0x00}, // Based on C64 '['
        {0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18}, // (custom)
-       {0x38, 0x0C, 0x0C, 0x06, 0x0C, 0x0C, 0x38, 0x00}, // (based on C64 ']')
-       {0x00, 0x00, 0x20, 0x5A, 0x04, 0x00, 0x00, 0x00}, // (based on C64 '-') [TODO: Needs improvement.]
+       {0x38, 0x0C, 0x0C, 0x06, 0x0C, 0x0C, 0x38, 0x00}, // Based on C64 ']'
+       {0x00, 0x00, 0x20, 0x5A, 0x04, 0x00, 0x00, 0x00}, // Based on C64 '-' [TODO: Needs improvement.]
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // TODO
 
        // 0x0080 [special OSD characters]
@@ -204,16 +205,16 @@ static const uint8_t C64_charset_ASCII[256][8] = {
        // 0x00A0
        // TODO (except A1, A2, A3)
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-       {0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00}, // (based on C64 '!')
-       {0x08, 0x3E, 0x68, 0x68, 0x68, 0x3E, 0x08, 0x00}, // (based on C64 'c')
+       {0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00}, // Based on C64 '!'
+       {0x08, 0x3E, 0x68, 0x68, 0x68, 0x3E, 0x08, 0x00}, // Based on C64 'c'
        {0x0C, 0x12, 0x30, 0x7C, 0x30, 0x62, 0xFC, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+       {0x66, 0x66, 0x66, 0x3C, 0x18, 0x7E, 0x18, 0x00}, // Based on C64 'Y' [TODO: Needs improvement.]
+       {0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18}, // (custom) (same as 0x7C)
+       {0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+       {0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, 0x7E, 0x00}, // Based on C64 'a'
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
@@ -227,17 +228,17 @@ static const uint8_t C64_charset_ASCII[256][8] = {
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-       {0x3E, 0x6A, 0x6A, 0x3E, 0x0A, 0x0A, 0x0A, 0x00}, // (based on C64 'P')
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+       {0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x7E, 0x40}, // Based on C64 'u'
+       {0x3E, 0x6A, 0x6A, 0x3E, 0x0A, 0x0A, 0x0A, 0x00}, // Based on C64 'P'
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+       {0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x7E, 0x00}, // Based on C64 'o'
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-       {0x18, 0x00, 0x18, 0x30, 0x60, 0x66, 0x3C, 0x00}, // (based on C64 '?')
+       {0x18, 0x00, 0x18, 0x30, 0x60, 0x66, 0x3C, 0x00}, // Based on C64 '?'
 
        // 0x00C0
        // TODO
@@ -248,7 +249,7 @@ static const uint8_t C64_charset_ASCII[256][8] = {
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+       {0x3C, 0x66, 0x60, 0x60, 0x60, 0x66, 0x3C, 0x18}, // Based on C64 'C'
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
@@ -260,58 +261,58 @@ static const uint8_t C64_charset_ASCII[256][8] = {
 
        // 0x00D0
        // TODO
+       {0x78, 0x6C, 0xF6, 0x66, 0x66, 0x6C, 0x78, 0x00}, // Based on C64 'D'
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+       {0x00, 0x66, 0x3C, 0x18, 0x3C, 0x66, 0x00, 0x00}, // Based on C64 'x'
+       {0x3C, 0x66, 0x6E, 0x76, 0x66, 0x66, 0x3C, 0x00}, // Based on C64 'O' [TODO: Needs improvement.]
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+       {0x00, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x00}, // Based on C64 'p'
+       {0x3C, 0x66, 0x66, 0x6C, 0x66, 0x66, 0x6C, 0x00}, // Based on C64 'B'
 
        // 0x00E0
-       {0x60, 0x30, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00}, // (based on C64 'a' and '\'')
-       {0x06, 0x0C, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00}, // (based on C64 'a' and '\'')
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // TODO
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // TODO
-       {0x24, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00}, // (based on C64 'a')
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // TODO
+       {0x60, 0x30, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00}, // Based on C64 'a' and '\''
+       {0x06, 0x0C, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00}, // Based on C64 'a' and '\''
+       {0x18, 0x24, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00}, // Based on C64 'a' and '\''
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // TODO
+       {0x24, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00}, // Based on C64 'a'
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // TODO
-       {0x60, 0x30, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00}, // (based on C64 'e' and '\'')
-       {0x06, 0x0C, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00}, // (based on C64 'e' and '\'')
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // TODO
-       {0x24, 0x00, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00}, // (based on C64 'e')
-       {0x60, 0x30, 0x00, 0x38, 0x18, 0x18, 0x3C, 0x00}, // (based on C64 'i' and '\'')
-       {0x06, 0x0C, 0x00, 0x38, 0x18, 0x18, 0x3C, 0x00}, // (based on C64 'i' and '\'')
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // TODO
-       {0x24, 0x00, 0x00, 0x38, 0x18, 0x18, 0x3C, 0x00}, // (based on C64 'i')
+       {0x00, 0x00, 0x3C, 0x60, 0x60, 0x60, 0x3C, 0x18}, // Based on C64 'c'
+       {0x60, 0x30, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00}, // Based on C64 'e' and '\''
+       {0x06, 0x0C, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00}, // Based on C64 'e' and '\''
+       {0x18, 0x24, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00}, // Based on C64 'e' and '\''
+       {0x24, 0x00, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00}, // Based on C64 'e'
+       {0x60, 0x30, 0x00, 0x38, 0x18, 0x18, 0x3C, 0x00}, // Based on C64 'i' and '\''
+       {0x06, 0x0C, 0x00, 0x38, 0x18, 0x18, 0x3C, 0x00}, // Based on C64 'i' and '\''
+       {0x18, 0x24, 0x00, 0x38, 0x18, 0x18, 0x3C, 0x00}, // Based on C64 'i' and '\''
+       {0x24, 0x00, 0x00, 0x38, 0x18, 0x18, 0x3C, 0x00}, // Based on C64 'i'
 
        // 0x00F0
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // TODO
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // TODO
-       {0x60, 0x30, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00}, // (based on C64 'o' and '\'')
-       {0x06, 0x0C, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00}, // (based on C64 'o' and '\'')
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // TODO
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // TODO
-       {0x24, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00}, // (based on C64 'o')
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // TODO
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // TODO
-       {0x60, 0x30, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00}, // (based on C64 'u' and '\'')
-       {0x06, 0x0C, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00}, // (based on C64 'u' and '\'')
-       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // TODO
-       {0x24, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00}, // (based on C64 'y')
-       {0x06, 0x0C, 0x66, 0x66, 0x66, 0x3E, 0x0C, 0x78}, // (based on C64 'y' and '\'')
+       {0x60, 0x30, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00}, // Based on C64 'o' and '\''
+       {0x06, 0x0C, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00}, // Based on C64 'o' and '\''
+       {0x18, 0x24, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00}, // Based on C64 'o' and '\''
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // TODO
-       {0x24, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x0C, 0x78}, // (based on C64 'y')
+       {0x24, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00}, // Based on C64 'o'
+       {0x00, 0x18, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x00}, // Based on C64 ':' and '-'
+       {0x00, 0x00, 0x3C, 0x6E, 0x76, 0x66, 0x3C, 0x00}, // Based on C64 'o' [TODO: Needs improvement.]
+       {0x60, 0x30, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00}, // Based on C64 'u' and '\''
+       {0x06, 0x0C, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00}, // Based on C64 'u' and '\''
+       {0x18, 0x24, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00}, // Based on C64 'u' and '\''
+       {0x24, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00}, // Based on C64 'y'
+       {0x06, 0x0C, 0x66, 0x66, 0x66, 0x3E, 0x0C, 0x78}, // Based on C64 'y' and '\''
+       {0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60}, // Based on C64 'p'
+       {0x24, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x0C, 0x78}, // Based on C64 'y'
 };
 
 // OsdFont struct.