Auto full-combo Koibumi2000 in Taiko no Tatsujin CS5

Dependencies:   fll mbed-rtos mbed

Revision:
5:130721ce29f7
Parent:
4:9ee673ca05ad
Child:
6:d0348b7a2f05
--- a/main.cpp	Sat Feb 14 06:49:42 2015 +0000
+++ b/main.cpp	Sat Feb 14 07:25:27 2015 +0000
@@ -3,10 +3,20 @@
 #include "fll.h"
 
 #define FRAME 1.0 / 60 // 1 frame (sec)
-#define PULL_PERIOD 20 // millisec
 
-void invoke_sinkrun(const void *p)
-{
+class OrPipe : public Pipe {
+    public:
+    OrPipe(Source **srcs, int srcs_size) : Pipe(srcs, srcs_size) {}
+    virtual button_t fold(button_t *bs, int bs_size) {
+        button_t b = 0x00;
+        for(int i = 0; i < bs_size; i++) {
+            b |= bs[i];
+        }
+        return b;
+    }
+};
+
+void invoke_sinkrun(const void *p) {
     ((Sink*)p)->run();
 }
 void outputrun(const void *p)
@@ -16,9 +26,13 @@
 
 int main(void)
 {
-    button_t array[] = {R1|B_CIRCLE, 0};
+    button_t array0[] = {R1, 0};
+    button_t array1[] = {B_CIRCLE, 0};
     // user must make Source
-    Source* source = new Source(array, sizeof(array)/sizeof(button_t), true);
+    Source* source0 = new Source(array0, sizeof(array0)/sizeof(button_t), true);
+    Source* source1 = new Source(array1, sizeof(array1)/sizeof(button_t), true);
+    Source* ss[] = {source0, source1};
+    Source* source = new OrPipe(ss, 2);
 
     // common pattern
     Mail<button_t, MAIL_BOX_SIZE>* mail_box = new Mail<button_t, MAIL_BOX_SIZE>();