new version
[Chiptunes.git] / foo.c
diff --git a/foo.c b/foo.c
index ef4720b1deb83bf628b2b3b520f8a6c54b089b8d..404129ffa7e99ff6d1356cf9011acb16993088ed 100644 (file)
--- a/foo.c
+++ b/foo.c
@@ -1,19 +1,23 @@
 #include <stdio.h>
 typedef unsigned char u8;
-int g(int i, int x, int t, int o) {
-       return ((3 & x & (i * ((3 & i >> 16 ? "BY}6YB6%" : "Qj}6jQ6%")[t % 8] + 51) >> o)) << 4);
+int g(int i, u8 x, u8 t, u8 o) {
+       u8 xxx = (3 & i >> 16 ? "BY}6YB6%" : "Qj}6jQ6%")[t % 8];
+       return ((3 & x & (i * (xxx + 51) >> o)));
 };
 
 int main(void) {
        int i;
        int n;
        int s;
+       u8 acc;
        for (i = 0;; i++) {
+               acc = 0;
                n = i >> 14;
                s = i >> 17;
-               putchar(g(i, 1, n, 12) +
-                       g(i, s, n ^ i >> 13, 10) + 
-                       g(i, s / 3, n + ((i >> 11) % 3), 10) + 
-                       g(i, s / 5, 8 + n - ((i >> 10) % 3), 9));
+               acc += g(i, 1, n, 12);
+               acc += g(i, s, n ^ i >> 13, 10);
+               acc += g(i, s / 3, n + ((i >> 11) % 3), 10);
+               acc += g(i, s / 5, 8 + n - ((i >> 10) % 3), 9);
+               putchar(acc<<4);
        }
 }
Imprint / Impressum