shithub: m8c

Download patch

ref: 861c5240d0b26c94a1f934d669257c9c3b1c5f37
parent: 69a5eceea271b3cb64b415dca48f723c6d5d2d92
author: Jonne Kokkonen <jonne.kokkonen@gmail.com>
date: Mon May 22 19:05:41 EDT 2023

firmware 3.0.5 changes

--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 #Set all your object files (the object files of all the .c files in your project, e.g. main.o my_sub_functions.o )
-OBJ = main.o serial.o slip.o command.o render.o ini.o config.o input.o font.o fx_cube.o usb.o audio.o usb_audio.o ringbuffer.o
+OBJ = main.o serial.o slip.o command.o render.o ini.o config.o input.o fx_cube.o usb.o audio.o usb_audio.o ringbuffer.o inprint2.o
 
 #Set any dependant header files so that if they are edited they cause a complete re-compile (e.g. main.h some_subfunctions.h some_definitions_file.h ), or leave blank
 DEPS = serial.h slip.h command.h render.h ini.h config.h input.h fx_cube.h audio.h ringbuffer.h
@@ -31,14 +31,14 @@
 libusb: local_CFLAGS = $(CFLAGS) $(shell pkg-config --cflags sdl2 libusb-1.0) -Wall -O2 -pipe -I. -DUSE_LIBUSB=1
 libusb: m8c
 
-font.c: inline_font.h
-	@echo "#include <SDL.h>" > $@-tmp1
-	@cat inline_font.h >> $@-tmp1
-	@cat inprint2.c > $@-tmp2
-	@sed '/#include/d' $@-tmp2 >> $@-tmp1
-	@rm $@-tmp2
-	@mv $@-tmp1 $@
-	@echo "[~cat] inline_font.h inprint2.c > font.c"
+#font.c: inline_font.h
+#	@echo "#include <SDL.h>" > $@-tmp1
+#	@cat inline_font.h >> $@-tmp1
+#	@cat inprint2.c > $@-tmp2
+#	@sed '/#include/d' $@-tmp2 >> $@-tmp1
+#	@rm $@-tmp2
+#	@mv $@-tmp1 $@
+#	@echo "[~cat] inline_font.h inprint2.c > font.c"
 #	$(CC) -c -o font.o font.c $(local_CFLAGS)
 
 #Cleanup
@@ -45,7 +45,7 @@
 .PHONY: clean
 
 clean:
-	rm -f *.o *~ m8c *~ font.c
+	rm -f *.o *~ m8c
 
 # PREFIX is environment variable, but if it is not set, then set default value
 ifeq ($(PREFIX),)
--- a/SDL2_inprint.h
+++ b/SDL2_inprint.h
@@ -7,7 +7,7 @@
 
 #include <SDL.h>
 
-extern void prepare_inline_font(void);
+extern void prepare_inline_font(unsigned char bits[],int font_width, int font_height);
 extern void kill_inline_font(void);
 
 extern void inrenderer(SDL_Renderer *renderer);
--- a/command.c
+++ b/command.c
@@ -20,7 +20,9 @@
   draw_oscilloscope_waveform_command_mindatalength = 1 + 3,
   draw_oscilloscope_waveform_command_maxdatalength = 1 + 3 + 320,
   joypad_keypressedstate_command = 0xFB,
-  joypad_keypressedstate_command_datalength = 2
+  joypad_keypressedstate_command_datalength = 3,
+  system_info_command = 0xFF,
+  system_info_command_datalength = 6
 };
 
 static inline void dump_packet(uint32_t size, uint8_t *recv_buf) {
@@ -115,21 +117,52 @@
 
     break;
 
-  case joypad_keypressedstate_command:
-    /*
+  case joypad_keypressedstate_command: {
     if (size != joypad_keypressedstate_command_datalength) {
-      SDL_LogError(SDL_LOG_CATEGORY_ERROR,
-              "Invalid joypad keypressed state packet: expected length %d, "
-              "got %d\n",
-              joypad_keypressedstate_command_datalength, size);
+      SDL_LogError(
+          SDL_LOG_CATEGORY_ERROR,
+          "Invalid joypad keypressed state packet: expected length %d, "
+          "got %d\n",
+          joypad_keypressedstate_command_datalength, size);
       dump_packet(size, recv_buf);
+      return 0;
       break;
-    } */
+    }
 
     // nothing is done with joypad key pressed packets for now
     return 1;
     break;
+  }
 
+  case system_info_command: {
+    if (size != system_info_command_datalength) {
+      SDL_LogError(SDL_LOG_CATEGORY_ERROR,
+                   "Invalid system info packet: expected length %d, "
+                   "got %d\n",
+                   system_info_command_datalength, size);
+      dump_packet(size, recv_buf);
+      break;
+    }
+
+    char *hwtype[3] = {"Headless", "Beta M8", "Production M8"};
+
+    static int system_info_printed = 0;
+
+    if (system_info_printed == 0) {
+      SDL_Log("** Hardware info ** Device type: %s, Firmware ver %d.%d.%d",
+              hwtype[recv_buf[1]], recv_buf[2], recv_buf[3], recv_buf[4]);
+      system_info_printed = 1;
+    }
+
+    if (recv_buf[5] == 0x01) {
+      set_large_mode(1);
+    } else {
+      set_large_mode(0);
+    }
+    return 1;
+    break;
+  }
+
   default:
 
     SDL_LogError(SDL_LOG_CATEGORY_ERROR, "Invalid packet\n");
@@ -137,4 +170,5 @@
     return 0;
     break;
   }
+  return 1;
 }
--- a/command.h
+++ b/command.h
@@ -41,16 +41,6 @@
   uint16_t waveform_size;
 };
 
-struct command_queues {
-  struct draw_rectangle_command rectangles[128];
-  uint8_t rectangles_queue_size;
-  struct draw_character_command characters[128];
-  uint8_t characters_queue_size;
-  struct draw_oscilloscope_waveform_command waveform;
-  uint8_t waveforms_queue_size;
-};
-
-
 int process_command(uint8_t *data, uint32_t size);
 
-#endif
\ No newline at end of file
+#endif
--- a/inline_font.h
+++ b/inline_font.h
@@ -1,102 +1,8 @@
-/*
-The FontStruction “M8stealth57”
-(https://fontstruct.com/fontstructions/show/2043303) by “trash80” is licensed
-under a Creative Commons Attribution Share Alike license
-(http://creativecommons.org/licenses/by-sa/3.0/). “M8stealth57” was originally
-cloned (copied) from the FontStruction “stealth57”
-(https://fontstruct.com/fontstructions/show/413734) by “trash80”, which is
-licensed under a Creative Commons Attribution Share Alike license
-(http://creativecommons.org/licenses/by-sa/3.0/).
-
-Used with permission from the author.
-*/
-
-#define inline_font_width 128
-#define inline_font_height 64
-static unsigned char inline_font_bits[] = {
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf5, 0xff, 0xfb, 0xff, 0xf9, 0xfb,
-    0xef, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xfe, 0xf5, 0xf5,
-    0xe0, 0xec, 0xf6, 0xfb, 0xf7, 0xfd, 0xf5, 0xfb, 0xff, 0xff, 0xff, 0xef,
-    0xff, 0xfe, 0xff, 0xe0, 0xfa, 0xf4, 0xfa, 0xff, 0xf7, 0xfd, 0xfb, 0xfb,
-    0xff, 0xff, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf5, 0xe0, 0xfb, 0xed, 0xff,
-    0xf7, 0xfd, 0xf5, 0xe0, 0xff, 0xe0, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xe0,
-    0xeb, 0xe5, 0xea, 0xff, 0xf7, 0xfd, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfd,
-    0xff, 0xff, 0xff, 0xf5, 0xe0, 0xe6, 0xf6, 0xff, 0xf7, 0xfd, 0xff, 0xfb,
-    0xfb, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xfb, 0xff, 0xe9, 0xff,
-    0xef, 0xfe, 0xff, 0xff, 0xfb, 0xff, 0xfb, 0xfe, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xe0, 0xfb, 0xe0, 0xe0, 0xee, 0xe0, 0xe0, 0xe0, 0xe1, 0xe0, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xf1, 0xee, 0xf8, 0xef, 0xef, 0xee, 0xfe, 0xfe, 0xef,
-    0xee, 0xee, 0xff, 0xff, 0xf7, 0xff, 0xfd, 0xee, 0xe6, 0xfb, 0xef, 0xef,
-    0xee, 0xfe, 0xfe, 0xef, 0xee, 0xee, 0xfd, 0xfd, 0xf3, 0xe0, 0xf9, 0xef,
-    0xea, 0xfb, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf7, 0xe0, 0xe0, 0xff, 0xff,
-    0xf1, 0xff, 0xf1, 0xf7, 0xec, 0xfb, 0xfe, 0xef, 0xef, 0xef, 0xee, 0xfb,
-    0xee, 0xef, 0xff, 0xff, 0xf3, 0xe0, 0xf9, 0xfb, 0xee, 0xfb, 0xfe, 0xef,
-    0xef, 0xef, 0xee, 0xfb, 0xee, 0xef, 0xfd, 0xfd, 0xf7, 0xff, 0xfd, 0xff,
-    0xe0, 0xe0, 0xe0, 0xe0, 0xef, 0xe0, 0xe0, 0xfb, 0xf0, 0xef, 0xff, 0xfd,
-    0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xf1, 0xf0, 0xf1,
-    0xf0, 0xe0, 0xe0, 0xf1, 0xee, 0xe0, 0xef, 0xee, 0xfe, 0xee, 0xee, 0xf1,
-    0xee, 0xee, 0xee, 0xee, 0xee, 0xfe, 0xfe, 0xee, 0xee, 0xfb, 0xef, 0xf6,
-    0xfe, 0xe4, 0xec, 0xee, 0xe2, 0xee, 0xee, 0xfe, 0xee, 0xfe, 0xfe, 0xfe,
-    0xee, 0xfb, 0xef, 0xfa, 0xfe, 0xea, 0xea, 0xee, 0xea, 0xe0, 0xf0, 0xfe,
-    0xee, 0xf0, 0xf0, 0xfe, 0xe0, 0xfb, 0xef, 0xfc, 0xfe, 0xee, 0xe6, 0xee,
-    0xe2, 0xee, 0xee, 0xfe, 0xee, 0xfe, 0xfe, 0xe6, 0xee, 0xfb, 0xee, 0xfa,
-    0xfe, 0xee, 0xee, 0xee, 0xfe, 0xee, 0xee, 0xee, 0xee, 0xfe, 0xfe, 0xee,
-    0xee, 0xfb, 0xee, 0xf6, 0xfe, 0xee, 0xee, 0xee, 0xf1, 0xee, 0xf0, 0xf1,
-    0xf0, 0xe0, 0xfe, 0xf1, 0xee, 0xe0, 0xf1, 0xee, 0xe0, 0xee, 0xee, 0xf1,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xf0, 0xf1, 0xf0, 0xe1, 0xe0, 0xee, 0xee, 0xee,
-    0xee, 0xee, 0xe0, 0xe7, 0xfe, 0xfc, 0xfb, 0xff, 0xee, 0xee, 0xee, 0xfe,
-    0xfb, 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xf7, 0xfe, 0xfd, 0xf5, 0xff,
-    0xee, 0xee, 0xee, 0xfe, 0xfb, 0xee, 0xee, 0xee, 0xf5, 0xee, 0xf7, 0xf7,
-    0xfd, 0xfd, 0xff, 0xff, 0xf0, 0xee, 0xf0, 0xf1, 0xfb, 0xee, 0xee, 0xee,
-    0xfb, 0xe1, 0xfb, 0xf7, 0xfb, 0xfd, 0xff, 0xff, 0xfe, 0xea, 0xf6, 0xef,
-    0xfb, 0xee, 0xf5, 0xea, 0xf5, 0xef, 0xfd, 0xf7, 0xf7, 0xfd, 0xff, 0xff,
-    0xfe, 0xf6, 0xee, 0xef, 0xfb, 0xee, 0xf5, 0xe4, 0xee, 0xef, 0xfe, 0xf7,
-    0xef, 0xfd, 0xff, 0xff, 0xfe, 0xe9, 0xee, 0xf0, 0xfb, 0xf1, 0xfb, 0xee,
-    0xee, 0xf0, 0xe0, 0xe7, 0xef, 0xfc, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xfd, 0xff, 0xfe, 0xff, 0xef, 0xff, 0xe3, 0xff, 0xfe, 0xfb, 0xf7, 0xfe,
-    0xf9, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xef, 0xff, 0xfb, 0xff,
-    0xfe, 0xff, 0xff, 0xfe, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0,
-    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf9, 0xf7, 0xee, 0xfb, 0xe0, 0xe0, 0xe0,
-    0xff, 0xef, 0xee, 0xfe, 0xee, 0xee, 0xfb, 0xee, 0xee, 0xfb, 0xf7, 0xf6,
-    0xfb, 0xea, 0xee, 0xee, 0xff, 0xe0, 0xee, 0xfe, 0xee, 0xe0, 0xfb, 0xe0,
-    0xee, 0xfb, 0xf7, 0xfa, 0xfb, 0xea, 0xee, 0xee, 0xff, 0xee, 0xee, 0xfe,
-    0xee, 0xfe, 0xfb, 0xef, 0xee, 0xfb, 0xf7, 0xf4, 0xfb, 0xea, 0xee, 0xee,
-    0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xfb, 0xe0, 0xee, 0xf1, 0xf8, 0xee,
-    0xf1, 0xea, 0xee, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xfb, 0xe0, 0xff, 0xc0,
-    0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xee,
-    0xfb, 0xee, 0xed, 0xd6, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xee, 0xee, 0xea,
-    0xee, 0xee, 0xe0, 0xee, 0xfb, 0xee, 0xf2, 0xd4, 0xee, 0xee, 0xfe, 0xfe,
-    0xfb, 0xee, 0xee, 0xea, 0xf5, 0xee, 0xf7, 0xee, 0xfb, 0xea, 0xff, 0xda,
-    0xee, 0xee, 0xfe, 0xe0, 0xfb, 0xee, 0xf6, 0xea, 0xfb, 0xe0, 0xfb, 0xee,
-    0xfb, 0xee, 0xff, 0xd4, 0xe0, 0xe0, 0xfe, 0xef, 0xfb, 0xee, 0xfa, 0xea,
-    0xf5, 0xef, 0xfd, 0xee, 0xfb, 0xee, 0xff, 0xd6, 0xfe, 0xef, 0xfe, 0xe0,
-    0xe3, 0xe0, 0xfc, 0xe0, 0xee, 0xe0, 0xe0, 0xe0, 0xfb, 0xe0, 0xff, 0xc0,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff};
+#ifndef INLINE_FONT_H_
+#define INLINE_FONT_H_
+struct inline_font {
+    int width;
+    int height;
+    unsigned char bits[];
+};
+#endif
--- a/inline_font.h.comicsans
+++ /dev/null
@@ -1,82 +1,0 @@
-#define inline_font_width 128
-#define inline_font_height 64
-static unsigned char inline_font_bits[] = {
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xf3, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xfd, 0xf9, 0xff, 0xf1, 0xf9, 0xf9, 0xfb, 0xfd, 0xfb, 0xff, 0xfd, 0xff, 0xff, 
-0xff, 0xf7, 0xff, 0xfd, 0xf9, 0xf5, 0xfa, 0xe9, 0xf9, 0xfb, 0xfd, 0xf7, 0xf9, 
-0xf8, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xfd, 0xf9, 0xf0, 0xf9, 0xf1, 0xf9, 0xfb, 
-0xfd, 0xf7, 0xf0, 0xfd, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xf5, 0xe3, 
-0xfb, 0xf2, 0xff, 0xfd, 0xf7, 0xf9, 0xff, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xff, 
-0xff, 0xf0, 0xeb, 0xe3, 0xf6, 0xff, 0xfd, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xfd, 0xff, 0xfd, 0xff, 0xfa, 0xf1, 0xe5, 0xf1, 0xff, 0xfb, 0xfb, 0xff, 0xff, 
-0xfb, 0xff, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xf3, 
-0xf9, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xf9, 0xfb, 0xf3, 
-0xf1, 0xf9, 0xf0, 0xfb, 0xf0, 0xf9, 0xf9, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xf8, 
-0xf6, 0xf9, 0xf5, 0xf7, 0xfa, 0xfe, 0xfc, 0xf7, 0xf6, 0xf6, 0xff, 0xff, 0xfb, 
-0xff, 0xfd, 0xfb, 0xf2, 0xfb, 0xf7, 0xf9, 0xf0, 0xf0, 0xf8, 0xfb, 0xf9, 0xf6, 
-0xff, 0xff, 0xfc, 0xf8, 0xfb, 0xf9, 0xf4, 0xfb, 0xfb, 0xf7, 0xfb, 0xf7, 0xf6, 
-0xfd, 0xf6, 0xf1, 0xfd, 0xfb, 0xfd, 0xf8, 0xf7, 0xfd, 0xf6, 0xfb, 0xfd, 0xf6, 
-0xfb, 0xf7, 0xf6, 0xfd, 0xf6, 0xf7, 0xff, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xf9, 
-0xf1, 0xe1, 0xf9, 0xff, 0xf8, 0xf9, 0xff, 0xf9, 0xf9, 0xfd, 0xfb, 0xf7, 0xff, 
-0xfc, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xf3, 0xff, 0xff, 0xf0, 0xff, 
-0xff, 0xff, 0xff, 0xfd, 0xff, 0xf5, 0xf6, 0xff, 0xf9, 0xf9, 0xff, 0xf5, 0xfc, 
-0xf0, 0xfe, 0xf3, 0xf6, 0xf8, 0xf0, 0xf6, 0xfe, 0xf5, 0xf4, 0xf9, 0xf6, 0xf5, 
-0xf8, 0xfe, 0xfa, 0xfe, 0xfe, 0xfd, 0xf6, 0xfd, 0xfb, 0xfa, 0xfe, 0xf4, 0xf4, 
-0xf6, 0xf0, 0xf1, 0xf6, 0xfe, 0xf6, 0xfe, 0xf0, 0xfe, 0xf6, 0xfd, 0xfb, 0xfc, 
-0xfe, 0xf0, 0xf4, 0xf6, 0xf0, 0xf6, 0xf8, 0xfe, 0xf6, 0xf0, 0xfe, 0xf0, 0xf0, 
-0xfd, 0xfb, 0xfc, 0xfe, 0xf2, 0xf2, 0xf6, 0xf4, 0xfe, 0xf6, 0xf1, 0xf6, 0xfe, 
-0xfe, 0xf6, 0xf6, 0xfd, 0xfa, 0xfa, 0xfe, 0xfa, 0xf6, 0xf6, 0xf6, 0xff, 0xf8, 
-0xff, 0xf8, 0xf0, 0xff, 0xf9, 0xf6, 0xf8, 0xf9, 0xf6, 0xf0, 0xff, 0xff, 0xf9, 
-0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xf1, 0xff, 0xf1, 0xf9, 0xff, 0xf8, 0xf9, 0xf8, 0xf1, 0xfb, 0xf6, 0xfe, 
-0xeb, 0xf5, 0xf6, 0xf0, 0xfd, 0xfe, 0xf7, 0xf6, 0xff, 0xf6, 0xf6, 0xf6, 0xfe, 
-0xfb, 0xf6, 0xf6, 0xea, 0xf9, 0xf6, 0xfb, 0xfd, 0xfd, 0xf7, 0xff, 0xff, 0xfa, 
-0xf6, 0xf6, 0xf9, 0xfb, 0xf6, 0xf6, 0xea, 0xfb, 0xf9, 0xfb, 0xfd, 0xfd, 0xf7, 
-0xff, 0xff, 0xf8, 0xf6, 0xf8, 0xf7, 0xfb, 0xf6, 0xf9, 0xe4, 0xf9, 0xfb, 0xfd, 
-0xfd, 0xfb, 0xf7, 0xff, 0xff, 0xfe, 0xf4, 0xfa, 0xf7, 0xfb, 0xf6, 0xf9, 0xe4, 
-0xf6, 0xfd, 0xfe, 0xfd, 0xfb, 0xf7, 0xff, 0xff, 0xfe, 0xf9, 0xf6, 0xf8, 0xff, 
-0xf9, 0xfb, 0xf5, 0xff, 0xfd, 0xf0, 0xfd, 0xf7, 0xf7, 0xff, 0xff, 0xff, 0xf7, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xf1, 0xff, 
-0xf0, 0xf9, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xf3, 0xff, 0xfe, 
-0xfb, 0xf9, 0xfe, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xf7, 0xff, 
-0xfd, 0xff, 0xfe, 0xff, 0xff, 0xfe, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xf6, 
-0xf9, 0xf1, 0xf9, 0xf0, 0xf1, 0xf0, 0xf9, 0xf8, 0xfa, 0xfb, 0xe0, 0xf0, 0xf9, 
-0xff, 0xf6, 0xf6, 0xfe, 0xf6, 0xfa, 0xfd, 0xf6, 0xf6, 0xfb, 0xfb, 0xfc, 0xfb, 
-0xea, 0xf6, 0xf6, 0xff, 0xf6, 0xf8, 0xfe, 0xf6, 0xfc, 0xfd, 0xf6, 0xf6, 0xfb, 
-0xfb, 0xfa, 0xfb, 0xea, 0xf6, 0xf6, 0xff, 0xf1, 0xff, 0xf9, 0xf1, 0xf0, 0xf8, 
-0xf0, 0xf6, 0xf1, 0xfb, 0xf6, 0xf1, 0xea, 0xf6, 0xf9, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xfc, 0xfb, 0xfb, 0xfe, 
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
-0xfd, 0xfb, 0xfd, 0xff, 0xf0, 0xf8, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xf6, 0xf2, 
-0xff, 0xff, 0xf1, 0xfd, 0xfb, 0xfd, 0xff, 0xf6, 0xf6, 0xf1, 0xf8, 0xf8, 0xf0, 
-0xf6, 0xf5, 0xf2, 0xf6, 0xf6, 0xfb, 0xfd, 0xfb, 0xfe, 0xf5, 0xf6, 0xf6, 0xf6, 
-0xfe, 0xfe, 0xfd, 0xf6, 0xf9, 0xf0, 0xf9, 0xf6, 0xfd, 0xfe, 0xfb, 0xf9, 0xf2, 
-0xf6, 0xf8, 0xf6, 0xfe, 0xf9, 0xfd, 0xf6, 0xfb, 0xf5, 0xf9, 0xf9, 0xf0, 0xfd, 
-0xfb, 0xfd, 0xff, 0xf6, 0xfe, 0xf1, 0xfe, 0xf8, 0xf1, 0xf0, 0xff, 0xff, 0xf6, 
-0xfb, 0xff, 0xfd, 0xfb, 0xfd, 0xff, 0xf6, 0xfe, 0xf7, 0xff, 0xff, 0xff, 0xff, 
-0xff, 0xff, 0xff, 0xfd, 0xff, 0xfb, 0xfb, 0xfe, 0xff, 0xf6  };
--- /dev/null
+++ b/inline_font_large.h
@@ -1,0 +1,119 @@
+#ifndef INLINE_FONT_LARGE_H_
+#define INLINE_FONT_LARGE_H_
+
+#include "inline_font.h"
+
+struct inline_font inline_font_large = {
+    128,
+    88,
+    {
+0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0xff, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 
+0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0xff, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 
+0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xff, 0xda, 0xda, 0xda, 
+0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xff, 
+0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 
+0xe6, 0xe6, 0xff, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 
+0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xff, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 
+0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xff, 0xda, 0xda, 0xda, 0xda, 
+0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xff, 0xbc, 
+0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 
+0xbc, 0xff, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 
+0x7e, 0x7e, 0x7e, 0x7e, 0xff, 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, 0x7e, 0x7e, 0x7e, 
+0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 
+0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 
+0xbc, 0xbc, 0xbc, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 
+0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 
+0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xf6, 0xf6, 0xf6, 0xf6, 
+0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xe6, 
+0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 
+0xe6, 0xe6, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 
+0xda, 0xda, 0xda, 0xda, 0xda, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 
+0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 
+0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x93, 0xff, 0xe7, 0xff, 
+0xff, 0xe7, 0x3f, 0xf9, 0xcc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x93, 
+0xff, 0x00, 0x7b, 0xe3, 0xe7, 0x9f, 0xf3, 0xe1, 0xff, 0xff, 0xff, 0xff, 0x3f, 
+0xff, 0xf3, 0x93, 0xdb, 0xe4, 0xb5, 0xc9, 0xe7, 0xcf, 0xe7, 0xf3, 0xe7, 0xff, 
+0xff, 0xff, 0x9f, 0xff, 0xf3, 0xff, 0x81, 0xe4, 0xdb, 0xc9, 0xff, 0xcf, 0xe7, 
+0xe1, 0xe7, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xf3, 0xff, 0xdb, 0x00, 0xef, 0xe3, 
+0xff, 0xcf, 0xe7, 0xcc, 0x81, 0xff, 0x81, 0xff, 0xe7, 0xff, 0xf3, 0xff, 0xdb, 
+0x27, 0xb7, 0xe1, 0xff, 0xcf, 0xe7, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xf3, 0xff, 
+0xff, 0xff, 0x81, 0x27, 0x5b, 0x0c, 0xff, 0xcf, 0xe7, 0xff, 0xe7, 0xff, 0xff, 
+0xff, 0xf9, 0xff, 0xff, 0xff, 0xdb, 0x00, 0xbd, 0x9c, 0xff, 0x9f, 0xf3, 0xff, 
+0xff, 0xf3, 0xff, 0xff, 0xfc, 0xff, 0xf3, 0xff, 0xff, 0xe7, 0xff, 0x21, 0xff, 
+0x3f, 0xf9, 0xff, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0x00, 0xe3, 0x00, 0x80, 0x3c, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0x81, 0x3c, 0xe1, 0x3f, 0x3f, 0x3c, 0xfc, 0xfc, 0x3f, 0x39, 
+0x3c, 0xff, 0xff, 0x3f, 0xff, 0xf9, 0x3c, 0x3c, 0xe4, 0x3f, 0x3f, 0x3c, 0xfc, 
+0xfc, 0x3f, 0x3c, 0x3c, 0xff, 0xff, 0x1f, 0x81, 0xf1, 0x3f, 0x3c, 0xe7, 0x3f, 
+0x3f, 0x3c, 0xfc, 0xfc, 0x9f, 0x3c, 0x3c, 0xf3, 0xf9, 0x0f, 0xff, 0xe1, 0x3f, 
+0x24, 0xe7, 0x00, 0x81, 0x00, 0x00, 0x00, 0xcf, 0x81, 0x00, 0xff, 0xff, 0x07, 
+0xff, 0xc1, 0x87, 0x3c, 0xe7, 0xfc, 0x3f, 0x3f, 0x3f, 0x3c, 0xe7, 0x3c, 0x3f, 
+0xff, 0xff, 0x0f, 0xff, 0xe1, 0xe7, 0x3c, 0xe7, 0xfc, 0x3f, 0x3f, 0x3f, 0x3c, 
+0xe7, 0x3c, 0x3f, 0xf3, 0xf9, 0x1f, 0x81, 0xf1, 0xe7, 0x3c, 0xe7, 0xfc, 0x3f, 
+0x3f, 0x3f, 0x3c, 0xe7, 0x3c, 0x3f, 0xff, 0xf9, 0x3f, 0xff, 0xf9, 0xff, 0x00, 
+0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0xe7, 0x80, 0x3f, 0xff, 0xfc, 0xff, 0xff, 
+0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, 0xc3, 0x80, 0x81, 0xc0, 
+0x00, 0x00, 0x81, 0x3c, 0x00, 0x00, 0x3c, 0xfc, 0x3c, 0x3c, 0x81, 0x3c, 0x99, 
+0x3c, 0x3c, 0x9c, 0xfc, 0xfc, 0x3c, 0x3c, 0xe7, 0x3f, 0x9c, 0xfc, 0x18, 0x38, 
+0x3c, 0x3c, 0x3c, 0x3c, 0xfc, 0x3c, 0xfc, 0xfc, 0xfc, 0x3c, 0xe7, 0x3f, 0xcc, 
+0xfc, 0x00, 0x30, 0x3c, 0x04, 0x3c, 0x3c, 0xfc, 0x3c, 0xfc, 0xfc, 0xfc, 0x3c, 
+0xe7, 0x3f, 0xe4, 0xfc, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x80, 0xfc, 0x3c, 0xc0, 
+0xc0, 0x0c, 0x00, 0xe7, 0x3f, 0xf0, 0xfc, 0x3c, 0x0c, 0x3c, 0x24, 0x3c, 0x3c, 
+0xfc, 0x3c, 0xfc, 0xfc, 0x3c, 0x3c, 0xe7, 0x3f, 0xe4, 0xfc, 0x3c, 0x1c, 0x3c, 
+0x84, 0x3c, 0x3c, 0xfc, 0x3c, 0xfc, 0xfc, 0x3c, 0x3c, 0xe7, 0x3c, 0xcc, 0xfc, 
+0x3c, 0x3c, 0x3c, 0xfc, 0x3c, 0x3c, 0x3c, 0x9c, 0xfc, 0xfc, 0x3c, 0x3c, 0xe7, 
+0x3c, 0x9c, 0xfc, 0x3c, 0x3c, 0x3c, 0x81, 0x3c, 0x80, 0x81, 0xc0, 0x00, 0xfc, 
+0x81, 0x3c, 0x00, 0x81, 0x3c, 0x00, 0x3c, 0x3c, 0x81, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0x80, 0x81, 0x80, 0x81, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 
+0x0f, 0xff, 0xf0, 0xf3, 0xff, 0x3c, 0x3c, 0x3c, 0x3c, 0xe7, 0x3c, 0x3c, 0x3c, 
+0x3c, 0x3c, 0x3f, 0xcf, 0xff, 0xf3, 0xe1, 0xff, 0x3c, 0x3c, 0x3c, 0xfc, 0xe7, 
+0x3c, 0x3c, 0x3c, 0x99, 0x3c, 0x9f, 0xcf, 0xfc, 0xf3, 0xcc, 0xff, 0x3c, 0x3c, 
+0x3c, 0xfc, 0xe7, 0x3c, 0x3c, 0x3c, 0xc3, 0x3c, 0xcf, 0xcf, 0xf9, 0xf3, 0xff, 
+0xff, 0x80, 0x3c, 0x80, 0x81, 0xe7, 0x3c, 0x3c, 0x3c, 0xe7, 0x81, 0xe7, 0xcf, 
+0xf3, 0xf3, 0xff, 0xff, 0xfc, 0x24, 0xe4, 0x3f, 0xe7, 0x3c, 0x3c, 0x24, 0xc3, 
+0xe7, 0xf3, 0xcf, 0xe7, 0xf3, 0xff, 0xff, 0xfc, 0x4c, 0xcc, 0x3f, 0xe7, 0x3c, 
+0x99, 0x00, 0x99, 0xe7, 0xf9, 0xcf, 0xcf, 0xf3, 0xff, 0xff, 0xfc, 0x9c, 0x9c, 
+0x3c, 0xe7, 0x3c, 0xc3, 0x18, 0x3c, 0xe7, 0xfc, 0xcf, 0x9f, 0xf3, 0xff, 0xff, 
+0xfc, 0x21, 0x3c, 0x81, 0xe7, 0x81, 0xe7, 0x3c, 0x3c, 0xe7, 0x00, 0x0f, 0x3f, 
+0xf0, 0xff, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfc, 0xff, 
+0x3f, 0xff, 0x01, 0xff, 0xfc, 0xe7, 0x3f, 0xfc, 0xf0, 0xff, 0xff, 0xff, 0xf9, 
+0xff, 0xfc, 0xff, 0x3f, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xff, 0xfc, 0xf3, 0xff, 
+0xff, 0xff, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0xe1, 0x01, 
+0x3c, 0xf3, 0x00, 0x00, 0x00, 0xff, 0x3f, 0x3c, 0xfc, 0x3c, 0x3c, 0x00, 0x3c, 
+0x3c, 0xe7, 0x3f, 0x9c, 0xf3, 0x24, 0x3c, 0x3c, 0xff, 0x3f, 0x3c, 0xfc, 0x3c, 
+0x3c, 0xf9, 0x3c, 0x3c, 0xe7, 0x3f, 0xcc, 0xf3, 0x24, 0x3c, 0x3c, 0xff, 0x00, 
+0x3c, 0xfc, 0x3c, 0x00, 0xf9, 0x00, 0x3c, 0xe7, 0x3f, 0xe0, 0xf3, 0x24, 0x3c, 
+0x3c, 0xff, 0x3c, 0x3c, 0xfc, 0x3c, 0xfc, 0xf9, 0x3f, 0x3c, 0xe7, 0x3f, 0xcc, 
+0xf3, 0x24, 0x3c, 0x3c, 0xff, 0x3c, 0x3c, 0xfc, 0x3c, 0xfc, 0xf9, 0x3f, 0x3c, 
+0xe7, 0x3f, 0x9c, 0xf3, 0x24, 0x3c, 0x3c, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0xf9, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x24, 0x3c, 0x00, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0x00, 0xe7, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0x3c, 0xe7, 0x3c, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x3c, 0x3c, 0x24, 0x3c, 0x3c, 0x00, 0x3c, 0xe7, 0x3c, 0xff, 0xff, 0x3c, 
+0x3c, 0xfc, 0xfc, 0xf9, 0x3c, 0x9c, 0x24, 0x99, 0x3c, 0x9f, 0x3c, 0xe7, 0x3c, 
+0xf1, 0xff, 0x3c, 0x3c, 0xfc, 0xfc, 0xf9, 0x3c, 0xcc, 0x24, 0xc3, 0x3c, 0xcf, 
+0x3c, 0xe7, 0x3c, 0x24, 0xff, 0x00, 0x00, 0xfc, 0x00, 0xf9, 0x3c, 0xe4, 0x24, 
+0xe7, 0x00, 0xe7, 0x3c, 0xe7, 0x3c, 0x8f, 0xff, 0xfc, 0x3f, 0xfc, 0x3f, 0xf9, 
+0x3c, 0xf0, 0x24, 0xc3, 0x3f, 0xf3, 0x3c, 0xe7, 0x3c, 0xff, 0xff, 0xfc, 0x3f, 
+0xfc, 0x3f, 0xf9, 0x3c, 0xf8, 0x24, 0x99, 0x3f, 0xf9, 0x3c, 0xe7, 0x3c, 0xff, 
+0xff, 0xfc, 0x3f, 0xfc, 0x00, 0x01, 0x00, 0xfc, 0x00, 0x3c, 0x00, 0x00, 0x00, 
+0xe7, 0x00, 0xff, 0xff  }};
+#endif
--- /dev/null
+++ b/inline_font_small.h
@@ -1,0 +1,83 @@
+/*
+The FontStruction “M8stealth57”
+(https://fontstruct.com/fontstructions/show/2043303) by “trash80” is licensed
+under a Creative Commons Attribution Share Alike license
+(http://creativecommons.org/licenses/by-sa/3.0/). “M8stealth57” was originally
+cloned (copied) from the FontStruction “stealth57”
+(https://fontstruct.com/fontstructions/show/413734) by “trash80”, which is
+licensed under a Creative Commons Attribution Share Alike license
+(http://creativecommons.org/licenses/by-sa/3.0/).
+
+Used with permission from the author.
+*/
+
+#ifndef INLINE_FONT_SMALL_H_
+#define INLINE_FONT_SMALL_H_
+
+#include "inline_font.h"
+
+struct inline_font inline_font_small = {
+    96,
+    64,
+    {
+0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 
+0x65, 0x59, 0x96, 0x65, 0x59, 0x96, 0x65, 0x59, 0x96, 0x65, 0x59, 0x3f, 0x45, 
+0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0xbf, 0xa6, 0x69, 
+0x9a, 0xa6, 0x69, 0x9a, 0xa6, 0x69, 0x9a, 0xa6, 0x69, 0x3f, 0x45, 0x51, 0x14, 
+0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0xbf, 0x65, 0x59, 0x96, 0x65, 
+0x59, 0x96, 0x65, 0x59, 0x96, 0x65, 0x59, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x96, 0x65, 0x59, 0x96, 0x65, 0x59, 0x96, 0x65, 0x59, 
+0x96, 0x65, 0x59, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 
+0x45, 0x51, 0x9a, 0xa6, 0x69, 0x9a, 0xa6, 0x69, 0x9a, 0xa6, 0x69, 0x9a, 0xa6, 
+0x69, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 
+0x96, 0x65, 0x59, 0x96, 0x65, 0x59, 0x96, 0x65, 0x59, 0x96, 0x65, 0x59, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x5f, 0xff, 
+0xfb, 0x9f, 0xef, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xbf, 0x5f, 0xd7, 0x20, 
+0x6b, 0xef, 0x77, 0x5f, 0xef, 0xff, 0xff, 0xbf, 0xbf, 0xff, 0x83, 0x3a, 0xad, 
+0xff, 0x77, 0xbf, 0xef, 0xff, 0xff, 0xdf, 0xbf, 0xff, 0xd7, 0xe0, 0xde, 0xfe, 
+0x77, 0x5f, 0x83, 0x3f, 0xf8, 0xef, 0xbf, 0xff, 0x83, 0x6b, 0xa9, 0xfe, 0x77, 
+0xff, 0xef, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xd7, 0xa0, 0x69, 0xff, 0x77, 0xff, 
+0xef, 0xfb, 0xff, 0xfb, 0xbf, 0xff, 0xff, 0xfb, 0x9f, 0xfe, 0xaf, 0xff, 0xff, 
+0xfb, 0xbf, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xe0, 0x0e, 0x82, 0x2e, 0x08, 0x82, 0x21, 0xf8, 0xff, 0xff, 0xff, 
+0xc7, 0x2e, 0xfe, 0xbe, 0xae, 0xef, 0xbf, 0xae, 0xfb, 0xff, 0xf7, 0xdf, 0xbb, 
+0xe6, 0xfe, 0xbe, 0xae, 0xef, 0xbf, 0xae, 0xdb, 0xf7, 0x33, 0x98, 0xbf, 0xea, 
+0x0e, 0x82, 0x20, 0x08, 0xde, 0x20, 0xf8, 0xff, 0xf1, 0x1f, 0xdf, 0xec, 0xee, 
+0xbf, 0xef, 0xeb, 0xee, 0xee, 0xfb, 0xff, 0x33, 0x98, 0xef, 0xee, 0xee, 0xbf, 
+0xef, 0xeb, 0xee, 0xee, 0xdb, 0xf7, 0xf7, 0xdf, 0xff, 0x20, 0x08, 0x82, 0x2f, 
+0x08, 0xee, 0xf0, 0xfb, 0xf7, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x71, 0x0c, 0xc7, 0x30, 0x08, 0xc6, 
+0x2e, 0xf8, 0xba, 0xbe, 0xeb, 0xc6, 0xae, 0xeb, 0xba, 0xae, 0xef, 0xbb, 0xee, 
+0xfe, 0xda, 0x3e, 0xc9, 0xba, 0xa2, 0xeb, 0xfa, 0xae, 0xef, 0xfb, 0xee, 0xfe, 
+0xea, 0xbe, 0xaa, 0xba, 0x2a, 0x08, 0xfb, 0x2e, 0x0c, 0xfb, 0xe0, 0xfe, 0xf2, 
+0xbe, 0x6b, 0xba, 0xa2, 0xeb, 0xfa, 0xae, 0xef, 0x9b, 0xee, 0xee, 0xea, 0xbe, 
+0xeb, 0xba, 0xbe, 0xeb, 0xba, 0xae, 0xef, 0xbb, 0xee, 0xee, 0xda, 0xbe, 0xeb, 
+0xba, 0xb1, 0x0b, 0xc7, 0x30, 0xe8, 0xc7, 0x2e, 0x18, 0xbb, 0xa0, 0xeb, 0xc6, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x70, 
+0x0c, 0x87, 0xa0, 0xeb, 0xba, 0xae, 0x0b, 0x9e, 0x3e, 0xbf, 0xff, 0xae, 0xeb, 
+0xfa, 0xbb, 0xeb, 0xba, 0xae, 0xfb, 0xde, 0x7e, 0x5f, 0xff, 0xae, 0xeb, 0xfa, 
+0xbb, 0xeb, 0xba, 0xb5, 0x7b, 0xdf, 0x7d, 0xff, 0xff, 0xb0, 0x0b, 0xc7, 0xbb, 
+0xeb, 0xba, 0x7b, 0xb8, 0xdf, 0x7b, 0xff, 0xff, 0xbe, 0x6a, 0xbf, 0xbb, 0x5b, 
+0xab, 0xf5, 0xdb, 0xdf, 0x77, 0xff, 0xff, 0xbe, 0xed, 0xbe, 0xbb, 0x5b, 0x93, 
+0xee, 0xeb, 0xdf, 0x6f, 0xff, 0xff, 0x7e, 0xea, 0xc2, 0x7b, 0xbc, 0xbb, 0x2e, 
+0x0c, 0x9e, 0x2f, 0xff, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xfd, 0xef, 0xff, 0xef, 0x3f, 0xfe, 0xfe, 0x7e, 0xfb, 
+0xf9, 0xff, 0xff, 0xfb, 0xef, 0xff, 0xef, 0xbf, 0xff, 0xfe, 0xff, 0xfb, 0xfb, 
+0xff, 0xff, 0x3f, 0x08, 0x82, 0x20, 0x08, 0x82, 0x60, 0x7e, 0xbb, 0x3b, 0x08, 
+0x82, 0xff, 0xeb, 0xfa, 0xae, 0xbb, 0xbb, 0xee, 0x7e, 0xdb, 0xbb, 0xea, 0xba, 
+0x3f, 0xe8, 0xfa, 0x2e, 0xb8, 0x83, 0xee, 0x7e, 0xeb, 0xbb, 0xea, 0xba, 0xbf, 
+0xeb, 0xfa, 0xae, 0xbf, 0xbf, 0xee, 0x7e, 0xd3, 0xbb, 0xea, 0xba, 0x3f, 0x08, 
+0x82, 0x20, 0xb8, 0x83, 0x6e, 0x8c, 0xbb, 0xb1, 0xea, 0x82, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 
+0xff, 0xff, 0xff, 0xff, 0x83, 0x3b, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 
+0xff, 0xff, 0xff, 0xbb, 0xbb, 0xdb, 0xfe, 0x20, 0x08, 0x82, 0xa0, 0xeb, 0xaa, 
+0xae, 0x0b, 0xba, 0xbb, 0x2b, 0xff, 0xae, 0xeb, 0xfb, 0xbb, 0xeb, 0xaa, 0xb5, 
+0x7b, 0xbb, 0xbb, 0xfa, 0xff, 0xae, 0xeb, 0x83, 0xbb, 0x6b, 0xab, 0x3b, 0xb8, 
+0xbb, 0xbb, 0xfb, 0xff, 0x20, 0xe8, 0xbf, 0xbb, 0xab, 0xab, 0xf5, 0xdb, 0xbb, 
+0xbb, 0xfb, 0xff, 0xfe, 0xeb, 0x83, 0x23, 0xc8, 0x83, 0x2e, 0x08, 0x82, 0x3b, 
+0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff  }};
+#endif
--- /dev/null
+++ b/inline_font_small.h.bak
@@ -1,0 +1,108 @@
+/*
+The FontStruction “M8stealth57”
+(https://fontstruct.com/fontstructions/show/2043303) by “trash80” is licensed
+under a Creative Commons Attribution Share Alike license
+(http://creativecommons.org/licenses/by-sa/3.0/). “M8stealth57” was originally
+cloned (copied) from the FontStruction “stealth57”
+(https://fontstruct.com/fontstructions/show/413734) by “trash80”, which is
+licensed under a Creative Commons Attribution Share Alike license
+(http://creativecommons.org/licenses/by-sa/3.0/).
+
+Used with permission from the author.
+*/
+
+#ifndef INLINE_FONT_SMALL_H_
+#define INLINE_FONT_SMALL_H_
+
+#include "inline_font.h"
+
+struct inline_font inline_font_small = {
+    128,
+    64,
+    {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf5, 0xff, 0xfb, 0xff, 0xf9, 0xfb,
+     0xef, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xfe, 0xf5, 0xf5,
+     0xe0, 0xec, 0xf6, 0xfb, 0xf7, 0xfd, 0xf5, 0xfb, 0xff, 0xff, 0xff, 0xef,
+     0xff, 0xfe, 0xff, 0xe0, 0xfa, 0xf4, 0xfa, 0xff, 0xf7, 0xfd, 0xfb, 0xfb,
+     0xff, 0xff, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf5, 0xe0, 0xfb, 0xed, 0xff,
+     0xf7, 0xfd, 0xf5, 0xe0, 0xff, 0xe0, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xe0,
+     0xeb, 0xe5, 0xea, 0xff, 0xf7, 0xfd, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfd,
+     0xff, 0xff, 0xff, 0xf5, 0xe0, 0xe6, 0xf6, 0xff, 0xf7, 0xfd, 0xff, 0xfb,
+     0xfb, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xfb, 0xff, 0xe9, 0xff,
+     0xef, 0xfe, 0xff, 0xff, 0xfb, 0xff, 0xfb, 0xfe, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xe0, 0xfb, 0xe0, 0xe0, 0xee, 0xe0, 0xe0, 0xe0, 0xe1, 0xe0, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xf1, 0xee, 0xf8, 0xef, 0xef, 0xee, 0xfe, 0xfe, 0xef,
+     0xee, 0xee, 0xff, 0xff, 0xf7, 0xff, 0xfd, 0xee, 0xe6, 0xfb, 0xef, 0xef,
+     0xee, 0xfe, 0xfe, 0xef, 0xee, 0xee, 0xfd, 0xfd, 0xf3, 0xe0, 0xf9, 0xef,
+     0xea, 0xfb, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf7, 0xe0, 0xe0, 0xff, 0xff,
+     0xf1, 0xff, 0xf1, 0xf7, 0xec, 0xfb, 0xfe, 0xef, 0xef, 0xef, 0xee, 0xfb,
+     0xee, 0xef, 0xff, 0xff, 0xf3, 0xe0, 0xf9, 0xfb, 0xee, 0xfb, 0xfe, 0xef,
+     0xef, 0xef, 0xee, 0xfb, 0xee, 0xef, 0xfd, 0xfd, 0xf7, 0xff, 0xfd, 0xff,
+     0xe0, 0xe0, 0xe0, 0xe0, 0xef, 0xe0, 0xe0, 0xfb, 0xf0, 0xef, 0xff, 0xfd,
+     0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xf1, 0xf0, 0xf1,
+     0xf0, 0xe0, 0xe0, 0xf1, 0xee, 0xe0, 0xef, 0xee, 0xfe, 0xee, 0xee, 0xf1,
+     0xee, 0xee, 0xee, 0xee, 0xee, 0xfe, 0xfe, 0xee, 0xee, 0xfb, 0xef, 0xf6,
+     0xfe, 0xe4, 0xec, 0xee, 0xe2, 0xee, 0xee, 0xfe, 0xee, 0xfe, 0xfe, 0xfe,
+     0xee, 0xfb, 0xef, 0xfa, 0xfe, 0xea, 0xea, 0xee, 0xea, 0xe0, 0xf0, 0xfe,
+     0xee, 0xf0, 0xf0, 0xfe, 0xe0, 0xfb, 0xef, 0xfc, 0xfe, 0xee, 0xe6, 0xee,
+     0xe2, 0xee, 0xee, 0xfe, 0xee, 0xfe, 0xfe, 0xe6, 0xee, 0xfb, 0xee, 0xfa,
+     0xfe, 0xee, 0xee, 0xee, 0xfe, 0xee, 0xee, 0xee, 0xee, 0xfe, 0xfe, 0xee,
+     0xee, 0xfb, 0xee, 0xf6, 0xfe, 0xee, 0xee, 0xee, 0xf1, 0xee, 0xf0, 0xf1,
+     0xf0, 0xe0, 0xfe, 0xf1, 0xee, 0xe0, 0xf1, 0xee, 0xe0, 0xee, 0xee, 0xf1,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xf0, 0xf1, 0xf0, 0xe1, 0xe0, 0xee, 0xee, 0xee,
+     0xee, 0xee, 0xe0, 0xe7, 0xfe, 0xfc, 0xfb, 0xff, 0xee, 0xee, 0xee, 0xfe,
+     0xfb, 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xf7, 0xfe, 0xfd, 0xf5, 0xff,
+     0xee, 0xee, 0xee, 0xfe, 0xfb, 0xee, 0xee, 0xee, 0xf5, 0xee, 0xf7, 0xf7,
+     0xfd, 0xfd, 0xff, 0xff, 0xf0, 0xee, 0xf0, 0xf1, 0xfb, 0xee, 0xee, 0xee,
+     0xfb, 0xe1, 0xfb, 0xf7, 0xfb, 0xfd, 0xff, 0xff, 0xfe, 0xea, 0xf6, 0xef,
+     0xfb, 0xee, 0xf5, 0xea, 0xf5, 0xef, 0xfd, 0xf7, 0xf7, 0xfd, 0xff, 0xff,
+     0xfe, 0xf6, 0xee, 0xef, 0xfb, 0xee, 0xf5, 0xe4, 0xee, 0xef, 0xfe, 0xf7,
+     0xef, 0xfd, 0xff, 0xff, 0xfe, 0xe9, 0xee, 0xf0, 0xfb, 0xf1, 0xfb, 0xee,
+     0xee, 0xf0, 0xe0, 0xe7, 0xef, 0xfc, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xfd, 0xff, 0xfe, 0xff, 0xef, 0xff, 0xe3, 0xff, 0xfe, 0xfb, 0xf7, 0xfe,
+     0xf9, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xef, 0xff, 0xfb, 0xff,
+     0xfe, 0xff, 0xff, 0xfe, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0,
+     0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf9, 0xf7, 0xee, 0xfb, 0xe0, 0xe0, 0xe0,
+     0xff, 0xef, 0xee, 0xfe, 0xee, 0xee, 0xfb, 0xee, 0xee, 0xfb, 0xf7, 0xf6,
+     0xfb, 0xea, 0xee, 0xee, 0xff, 0xe0, 0xee, 0xfe, 0xee, 0xe0, 0xfb, 0xe0,
+     0xee, 0xfb, 0xf7, 0xfa, 0xfb, 0xea, 0xee, 0xee, 0xff, 0xee, 0xee, 0xfe,
+     0xee, 0xfe, 0xfb, 0xef, 0xee, 0xfb, 0xf7, 0xf4, 0xfb, 0xea, 0xee, 0xee,
+     0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xfb, 0xe0, 0xee, 0xf1, 0xf8, 0xee,
+     0xf1, 0xea, 0xee, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xfb, 0xe0, 0xff, 0xc0,
+     0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xee,
+     0xfb, 0xee, 0xed, 0xd6, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xee, 0xee, 0xea,
+     0xee, 0xee, 0xe0, 0xee, 0xfb, 0xee, 0xf2, 0xd4, 0xee, 0xee, 0xfe, 0xfe,
+     0xfb, 0xee, 0xee, 0xea, 0xf5, 0xee, 0xf7, 0xee, 0xfb, 0xea, 0xff, 0xda,
+     0xee, 0xee, 0xfe, 0xe0, 0xfb, 0xee, 0xf6, 0xea, 0xfb, 0xe0, 0xfb, 0xee,
+     0xfb, 0xee, 0xff, 0xd4, 0xe0, 0xe0, 0xfe, 0xef, 0xfb, 0xee, 0xfa, 0xea,
+     0xf5, 0xef, 0xfd, 0xee, 0xfb, 0xee, 0xff, 0xd6, 0xfe, 0xef, 0xfe, 0xe0,
+     0xe3, 0xe0, 0xfc, 0xe0, 0xee, 0xe0, 0xe0, 0xe0, 0xfb, 0xe0, 0xff, 0xc0,
+     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0xff, 0xff, 0xff}};
+#endif
--- a/inprint2.c
+++ b/inprint2.c
@@ -1,11 +1,9 @@
-// Bitmap font routine originally by driedfruit, https://github.com/driedfruit/SDL_inprint
-// Released into public domain.
-// Modified to support adding a background to text.
+// Bitmap font routine originally by driedfruit,
+// https://github.com/driedfruit/SDL_inprint Released into public domain.
+// Modified to support multiple fonts & adding a background to text.
 
 #include <SDL.h>
 
-#include "inline_font.h" /* Actual font data */
-
 #define CHARACTERS_PER_ROW 16   /* I like 16 x 8 fontsets. */
 #define CHARACTERS_PER_COLUMN 8 /* 128 x 1 is another popular format. */
 
@@ -14,14 +12,15 @@
 static SDL_Texture *selected_font = NULL;
 static Uint16 selected_font_w, selected_font_h;
 
-void prepare_inline_font() {
+void prepare_inline_font(unsigned char bits[], int font_width,
+                         int font_height) {
   Uint32 *pix_ptr, tmp;
   int i, len, j;
   SDL_Surface *surface;
   Uint32 colors[2];
 
-  selected_font_w = inline_font_width;
-  selected_font_h = inline_font_height;
+  selected_font_w = font_width;
+  selected_font_h = font_height;
 
   if (inline_font != NULL) {
     selected_font = inline_font;
@@ -28,7 +27,7 @@
     return;
   }
 
-  surface = SDL_CreateRGBSurface(0, inline_font_width, inline_font_height, 32,
+  surface = SDL_CreateRGBSurface(0, font_width, font_height, 32,
 #if SDL_BYTEORDER == SDL_BIG_ENDIAN
                                  0xff000000, 0x00ff0000, 0x0000ff00, 0x000000ff
 #else
@@ -45,7 +44,7 @@
 
   /* Copy */
   for (i = 0; i < len; i++) {
-    tmp = (Uint8)inline_font_bits[i];
+    tmp = (Uint8)bits[i];
     for (j = 0; j < 8; j++) {
       Uint8 mask = (0x01 << j);
       pix_ptr[i * 8 + j] = colors[(tmp & mask) >> j];
@@ -68,7 +67,7 @@
   int w, h;
 
   if (font == NULL) {
-    prepare_inline_font();
+    // prepare_inline_font();
     return;
   }
 
@@ -128,6 +127,7 @@
       incolor(fgcolor, 0);
       previous_fgcolor = fgcolor;
     }
+
     if (bgcolor != -1) {
       SDL_SetRenderDrawColor(selected_renderer,
                              (Uint8)((bgcolor & 0x00FF0000) >> 16),
@@ -134,7 +134,13 @@
                              (Uint8)((bgcolor & 0x0000FF00) >> 8),
                              (Uint8)((bgcolor & 0x000000FF)), 0xFF);
       bg_rect = d_rect;
-      bg_rect.w = 6;
+      bg_rect.w = selected_font_w / CHARACTERS_PER_ROW - 1;
+      // Silly hack to get big font background aligned correctly.
+      if (bg_rect.h == 11) {
+        bg_rect.y++;
+        bg_rect.w++;
+      }
+
       SDL_RenderFillRect(dst, &bg_rect);
     }
     SDL_RenderCopy(dst, selected_font, &s_rect, &d_rect);
--- a/render.c
+++ b/render.c
@@ -8,17 +8,26 @@
 
 #include "SDL2_inprint.h"
 #include "SDL_log.h"
+#include "SDL_rect.h"
 #include "SDL_render.h"
+#include "SDL_stdinc.h"
 #include "command.h"
 #include "fx_cube.h"
 
+#include "inline_font.h"
+#include "inline_font_large.h"
+#include "inline_font_small.h"
+
 SDL_Window *win;
 SDL_Renderer *rend;
 SDL_Texture *maintexture;
-SDL_Color background_color = (SDL_Color){.r = 0x00, .g = 0x00, .b = 0x00, .a = 0x00};
+SDL_Color background_color =
+    (SDL_Color){.r = 0x00, .g = 0x00, .b = 0x00, .a = 0x00};
 
 static uint32_t ticks_fps;
 static int fps;
+static int large_font_enabled = 0;
+static int screen_offset_y = 0;
 
 uint8_t fullscreen = 0;
 
@@ -26,7 +35,7 @@
 
 // Initializes SDL and creates a renderer and required surfaces
 int initialize_sdl(int init_fullscreen, int init_use_gpu) {
-  //ticks = SDL_GetTicks();
+  // ticks = SDL_GetTicks();
 
   const int window_width = 640;  // SDL window width
   const int window_height = 480; // SDL window height
@@ -54,13 +63,14 @@
   SDL_SetRenderTarget(rend, maintexture);
 
   SDL_SetRenderDrawColor(rend, background_color.r, background_color.g,
-                              background_color.b, background_color.a);
+                         background_color.b, background_color.a);
 
   SDL_RenderClear(rend);
 
   // Initialize a texture for the font and read the inline font bitmap
   inrenderer(rend);
-  prepare_inline_font();
+  struct inline_font *font = &inline_font_large;
+  prepare_inline_font(font->bits, font->width, font->height);
 
   SDL_LogSetAllPriority(SDL_LOG_PRIORITY_INFO);
 
@@ -69,7 +79,25 @@
   return 1;
 }
 
+static void change_font(struct inline_font *font) {
+  kill_inline_font();
+  prepare_inline_font(font->bits, font->width, font->height);
+}
+
+void set_large_mode(int enabled) {
+  if (enabled) {
+    large_font_enabled = 1;
+    screen_offset_y = 41;
+    change_font(&inline_font_large);
+  } else {
+    large_font_enabled = 0;
+    screen_offset_y = 0;
+    change_font(&inline_font_small);
+  }
+}
+
 void close_renderer() {
+  kill_inline_font();
   SDL_DestroyTexture(maintexture);
   SDL_DestroyRenderer(rend);
   SDL_DestroyWindow(win);
@@ -93,15 +121,16 @@
   uint32_t bgcolor = (command->background.r << 16) |
                      (command->background.g << 8) | command->background.b;
 
-  if (bgcolor == fgcolor) {
-    // When bgcolor and fgcolor are the same, do not render a background
-    inprint(rend, (char *)&command->c, command->pos.x, command->pos.y + 3,
-            fgcolor, -1);
-  } else {
-    inprint(rend, (char *)&command->c, command->pos.x, command->pos.y + 3,
-            fgcolor, bgcolor);
-  }
+  /* Notes:
+     If large font is enabled, offset the screen elements by a fixed amount.
+     If background and foreground colors are the same, draw transparent
+     background. Due to the font bitmaps, a different pixel offset is needed for
+     both*/
 
+  inprint(rend, (char *)&command->c, command->pos.x,
+          command->pos.y + (large_font_enabled ? 2 : 3) - screen_offset_y,
+          fgcolor, (bgcolor == fgcolor) ? -1 : bgcolor);
+
   dirty = 1;
 
   return 1;
@@ -112,7 +141,11 @@
   SDL_Rect render_rect;
 
   render_rect.x = command->pos.x;
-  render_rect.y = command->pos.y;
+  if (large_font_enabled == 1) {
+    render_rect.y = command->pos.y - screen_offset_y;
+  } else {
+    render_rect.y = command->pos.y;
+  }
   render_rect.h = command->size.height;
   render_rect.w = command->size.width;
 
@@ -125,9 +158,9 @@
     background_color.a = 0xFF;
 
 #ifdef __ANDROID__
-      int bgcolor = (command->color.r << 16) |
-                           (command->color.g << 8) | command->color.b;
-      SDL_AndroidSendMessage(0x8001, bgcolor);
+    int bgcolor =
+        (command->color.r << 16) | (command->color.g << 8) | command->color.b;
+    SDL_AndroidSendMessage(0x8001, bgcolor);
 #endif
   }
 
@@ -141,12 +174,26 @@
 void draw_waveform(struct draw_oscilloscope_waveform_command *command) {
 
   static uint8_t wfm_cleared = 0;
+  static int prev_waveform_size = 0;
 
+
   // If the waveform is not being displayed and it's already been cleared, skip
   // rendering it
   if (!(wfm_cleared && command->waveform_size == 0)) {
 
-    const SDL_Rect wf_rect = {0, 0, 320, 21};
+    SDL_Rect wf_rect;
+    if (command->waveform_size > 0) {
+      wf_rect.x = 320 - command->waveform_size;
+      wf_rect.y = 0;
+      wf_rect.w = command->waveform_size;
+      wf_rect.h = 21;
+    } else {
+      wf_rect.x = 320 - prev_waveform_size;
+      wf_rect.y = 0;
+      wf_rect.w = prev_waveform_size;
+      wf_rect.h = 21;
+    }
+    prev_waveform_size = command->waveform_size;
 
     SDL_SetRenderDrawColor(rend, background_color.r, background_color.g,
                            background_color.b, background_color.a);
@@ -161,9 +208,10 @@
     for (int i = 0; i < command->waveform_size; i++) {
       // Limit value because the oscilloscope commands seem to glitch
       // occasionally
-      if (command->waveform[i] > 20)
+      if (command->waveform[i] > 20) {
         command->waveform[i] = 20;
-      waveform_points[i].x = i;
+      }
+      waveform_points[i].x = i + wf_rect.x;
       waveform_points[i].y = command->waveform[i];
     }
 
@@ -229,11 +277,11 @@
 void render_screen() {
   if (dirty) {
     dirty = 0;
-    //ticks = SDL_GetTicks();
+    // ticks = SDL_GetTicks();
     SDL_SetRenderTarget(rend, NULL);
-    
+
     SDL_SetRenderDrawColor(rend, background_color.r, background_color.g,
-                                background_color.b, background_color.a);
+                           background_color.b, background_color.a);
 
     SDL_RenderClear(rend);
     SDL_RenderCopy(rend, maintexture, NULL, NULL);
--- a/render.h
+++ b/render.h
@@ -9,10 +9,11 @@
 int initialize_sdl(int init_fullscreen, int init_use_gpu);
 void close_renderer();
 
-int process_queues(struct command_queues *queues);
 void draw_waveform(struct draw_oscilloscope_waveform_command *command);
 void draw_rectangle(struct draw_rectangle_command *command);
 int draw_character(struct draw_character_command *command);
+void set_large_mode(int enabled);
+void view_changed(int view);
 
 void render_screen();
 void toggle_fullscreen();
--