Browse Source

Script to create the BSOD graphic

jamesbowman 9 years ago
parent
commit
a2f5900ada
1 changed files with 46 additions and 0 deletions
  1. 46 0
      mk_bsod.py

+ 46 - 0
mk_bsod.py

@@ -0,0 +1,46 @@
+import array
+import zlib
+import textwrap
+import gameduino2 as gd2
+
+class Fragment(gd2.base.GD2):
+    def __init__(self):
+        self.commands = ""
+        self.run()
+        print "static const PROGMEM uint8_t __%s[%d] = {" % (self.name, len(self.commands))
+        print textwrap.fill(", ".join(["%d" % ord(c) for c in self.commands]))
+        print "};"
+
+    def c(self, s):
+        self.commands += s
+
+class Bsod(Fragment):
+    name = "bsod"
+    def run(self):
+        self.cmd_dlstart()
+        if 1:
+            self.ClearColorRGB(0, 0, 96)
+            self.Clear()
+            self.cmd_text(240, 90, 31, gd2.OPT_CENTER, "ERROR")
+        else:
+            self.BitmapLayout(gd2.TEXTVGA, 2 * 60, 17)
+            self.BitmapSize(gd2.NEAREST, gd2.BORDER, gd2.BORDER, 480, 272)
+            self.BlendFunc(gd2.ONE, gd2.ZERO)
+            self.Begin(gd2.BITMAPS)
+            self.Vertex2ii(0,0,0,0)
+            full = 60 * "!"
+            edge = "!                                                          !"
+            text = full + 15 * edge + full
+            screen = "".join(c + chr(0x1f) for c in text)
+            cscreen = zlib.compress(screen)
+            self.cmd_inflate(0)
+            self.c(cscreen)
+
+class IoMessage(Fragment):
+    name = "bsod_badfile"
+    def run(self):
+        self.cmd_text(240, 148, 29, gd2.OPT_CENTER, "Cannot open file:")
+
+if __name__ == '__main__':
+    Bsod()
+    IoMessage()