From 42e7fdf01c3a5701bb51e93ad6c650c3dbbc5450 Mon Sep 17 00:00:00 2001
From: Daniel Friesel <derf@finalrewind.org>
Date: Fri, 16 Apr 2021 20:49:36 +0200
Subject: ssd1306-bad-apple: support both 128x64 and 128x32 displays

---
 src/app/ssd1306-bad-apple/convert      | 4 ++--
 src/app/ssd1306-bad-apple/frames-to-cc | 4 ++--
 src/app/ssd1306-bad-apple/main.cc      | 8 ++++----
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/app/ssd1306-bad-apple/convert b/src/app/ssd1306-bad-apple/convert
index f0118dd..7d2ca0e 100755
--- a/src/app/ssd1306-bad-apple/convert
+++ b/src/app/ssd1306-bad-apple/convert
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-# ./convert.sh <file> -r <frame rate> [additional ffmpeg args]
+# [size=WxH] ./convert.sh <file> -r <frame rate> [additional ffmpeg args]
 
 set -eu
 
@@ -8,7 +8,7 @@ mkdir -p tmp
 
 ffmpeg -i "$@" tmp/frame%4d.png
 
-parallel mogrify -resize 128x64 -threshold 50% -- tmp/*.png
+parallel mogrify -resize "${size:-128x64}" -threshold 50% -- tmp/*.png
 
 echo "const unsigned char frame_rate = $3;" > frames.cc
 ./frames-to-cc tmp/*.png >> frames.cc
diff --git a/src/app/ssd1306-bad-apple/frames-to-cc b/src/app/ssd1306-bad-apple/frames-to-cc
index 0ae95ec..bcbabf7 100755
--- a/src/app/ssd1306-bad-apple/frames-to-cc
+++ b/src/app/ssd1306-bad-apple/frames-to-cc
@@ -1,11 +1,11 @@
 #!/usr/bin/env python3
 
 from PIL import Image
+import os
 import sys
 import zlib
 
-buf_w = 128
-buf_h = 64
+buf_w, buf_h = map(int, os.getenv("size", "128x64").split("x"))
 
 def load_image(filename):
     im = Image.open(filename)
diff --git a/src/app/ssd1306-bad-apple/main.cc b/src/app/ssd1306-bad-apple/main.cc
index 5e89625..d1ecd8d 100644
--- a/src/app/ssd1306-bad-apple/main.cc
+++ b/src/app/ssd1306-bad-apple/main.cc
@@ -15,7 +15,7 @@ volatile unsigned char timer_done = 0;
 
 #include "frames.cc"
 
-__attribute__((section(".leaRAM"))) unsigned char img_buf[(128 * 64 / 8) * 3];
+__attribute__((section(".leaRAM"))) unsigned char img_buf[(SSD1306_WIDTH * SSD1306_HEIGHT / 8) * 3];
 
 int main(void)
 {
@@ -35,7 +35,7 @@ int main(void)
 			timer_done = 0;
 			timer.start(1);
 
-			ssd1306.showImage(img_buf + (128 * 64 / 8 * 2), 128 * 64 / 8);
+			ssd1306.showImage(img_buf + (SSD1306_WIDTH * SSD1306_HEIGHT / 8 * 2), SSD1306_WIDTH * SSD1306_HEIGHT / 8);
 
 			inflate(frames[i], sizeof(img_buf), img_buf, sizeof(img_buf));
 
@@ -47,7 +47,7 @@ int main(void)
 			timer_done = 0;
 			timer.start(1);
 
-			ssd1306.showImage(img_buf + (128 * 64 / 8 * 0), 128 * 64 / 8);
+			ssd1306.showImage(img_buf + (SSD1306_WIDTH * SSD1306_HEIGHT / 8 * 0), SSD1306_WIDTH * SSD1306_HEIGHT / 8);
 
 			while (!timer_done) {
 				arch.idle();
@@ -57,7 +57,7 @@ int main(void)
 			timer_done = 0;
 			timer.start(1);
 
-			ssd1306.showImage(img_buf + (128 * 64 / 8 * 1), 128 * 64 / 8);
+			ssd1306.showImage(img_buf + (SSD1306_WIDTH * SSD1306_HEIGHT / 8 * 1), SSD1306_WIDTH * SSD1306_HEIGHT / 8);
 
 			while (!timer_done) {
 				arch.idle();
-- 
cgit v1.2.3