diff --git a/tools/imageconvert.py b/tools/imageconvert.py
deleted file mode 100755
index 72ea36139b31c3115307968c73ce5cccfa0fb483..0000000000000000000000000000000000000000
--- a/tools/imageconvert.py
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env python3
-
-from PIL import Image
-import sys
-
-if len(sys.argv) < 2:
- print("Usage: %s <image file>" % sys.argv[0])
- sys.exit(1)
-
-im = Image.open(sys.argv[1])
-
-out_name = '.'.join(sys.argv[1].split('.')[:-1])
-
-print(out_name)
-out = open(out_name + ".h", 'w')
-
-out.write("const unsigned char %s[] = {\n" % out_name.split('/')[-1])
-
-for x in range(im.size[1]):
- for y in range(im.size[0]):
- px = im.getpixel((y, x))
-
- px16 = ((px[0] >> 3) << 11) | ((px[1] >> 2) << 5) | (px[2] >> 3)
-
- px16h = (px16 & 0xFF00) >> 8
- px16l = px16 & 0xFF
-
- out.write("0x%02x, 0x%02x,\n" % (px16l, px16h))
-
-out.write("};\n")
diff --git a/tools/version-image.py b/tools/version-image.py
new file mode 100755
index 0000000000000000000000000000000000000000..0a20327c25d5e669e05ed90b5255e888a0ac61e5
--- /dev/null
+++ b/tools/version-image.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python3
+import argparse
+import os
+from PIL import Image
+
+
+def main() -> None:
+ parser = argparse.ArgumentParser(
+ description="""\
+Update the epicardium version-splash. NOTE: You need to adjust
+epicardium/main.c if you want to actually see your version splash!!
+"""
+ )
+
+ parser.add_argument("image", help="Path to version image")
+
+ args = parser.parse_args()
+
+ im = Image.open(args.image)
+ assert im.size[0] == 160, "Image must be 160 pixels wide"
+ assert im.size[1] == 80, "Image must be 80 pixels high)"
+
+ # find version-splash.h
+ vsplash = os.path.join(os.path.dirname(__file__), "../epicardium/version-splash.h")
+
+ with open(vsplash, "w") as f:
+ tmp = """\
+#pragma once
+#include <stdint.h>
+
+/* clang-format off */
+const uint8_t version_splash[] = {
+"""
+ f.write(tmp)
+
+ for x in range(im.size[1]):
+ for y in range(im.size[0]):
+ px = im.getpixel((y, x))
+
+ px565 = ((px[0] >> 3) << 11) | ((px[1] >> 2) << 5) | (px[2] >> 3)
+ byte_high = (px565 & 0xFF00) >> 8
+ byte_low = px565 & 0xFF
+
+ if y % 4 == 0:
+ f.write("\t")
+
+ f.write("0x{:02x}, 0x{:02x},".format(byte_low, byte_high))
+
+ if y % 4 == 3:
+ f.write("\n")
+ else:
+ f.write(" ")
+
+ f.write("};\n")
+
+
+if __name__ == "__main__":
+ main()