Auto full-combo Koibumi2000 in Taiko no Tatsujin CS5

Dependencies:   fll mbed-rtos mbed

main.cpp

Committer:
sierra
Date:
2015-02-17
Revision:
33:cc84b10e6c67
Parent:
21:9cc452a67382
Parent:
32:fdf9f6fca8a2
Child:
34:422d4d6ae5ea

File content as of revision 33:cc84b10e6c67:

#include "mbed.h"
#include "rtos.h"
#include "fll.h"
#include "fllaux.h"
#include "taiko.h"

int main(void)
{
    /*
    button_t array0[] = {R1, 0};
    button_t array1[] = {CIRCLE, 0};

    Producer* source0 = new RepeaterSource(array0, sizeof(array0)/sizeof(button_t));
    Producer* source1 = new RepeaterSource(array1, sizeof(array1)/sizeof(button_t));
    Producer* ss[] = {source0, source1};
    Producer* source = new MergeFlow(ss, 2);
    */


    note don1 = { Don, 1 };
    note don075 = { Don, 0.75 };
    note don05 = { Don, 0.5 };
    note don025 = { Don, 0.25 };
    note un1 = { Un, 1 };
    note un05 = { Un, 0.5 };
    note ka1 = { Ka, 1 };
    note ka05 = { Ka, 0.5 };
    note ka025 = { Ka, 0.25 };
    note renda3 = { Renda, 3 };
    note renda2 = { Renda, 2 };
    note dondai05 = { DonDai, 0.5 };
    note dondai1 = { DonDai, 1 };
    note kadai05 = { KaDai, 0.5 };
    note kadai1 = { KaDai, 1 };

    /*
    // Radetzkymarsch perfect score
    note* note_seq[] = {
        &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &don1,
        &don025, &don025, &don025, &don025, &don05, &don05, &don1, &un05, &don025, &don025,

        &don05, &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &don025, &don025,
        &don05, &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &un05,

        &don05, &ka05, &ka05, &un05, &don05, &ka05, &ka05, &un05,
        &don05, &ka05, &don05, &ka05, &don1, &un1,

        &don05, &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &don025, &don025,
        &don05, &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &un05,

        &don05, &ka05, &ka05, &un05, &don05, &ka05, &ka05, &un05,
        &don075, &don025, &don025, &don025, &don025, &don025, &don05, &don05, &don1,

        &renda3, &un1,
        &renda3, &un1,

        &don1, &don075, &don025, &don1, &don1,
        &ka05, &ka025, &ka025, &ka05, &don05, &ka05, &ka025, &ka025, &ka1,

        &don1, &don075, &don025, &don1, &don1,
        &ka05, &ka025, &ka025, &ka05, &don05, &ka05, &ka025, &ka025, &ka05, &don05,

        &ka05, &ka025, &ka025, &ka05, &ka025, &ka025, &ka05, &ka025, &ka025, &ka05, &ka025, &ka025,
        &ka1, &un1, &un1, &un05, &don025, &don025,

        &don05, &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &don025, &don025,
        &don05, &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &un05,

        &don05, &ka05, &ka05, &un05, &don05, &ka05, &ka05, &un05,
        &don05, &ka05, &don05, &ka05, &don1, &un1,

        &don05, &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &don025, &don025,
        &don05, &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &un05,

        &don05, &ka05, &ka05, &un05, &don05, &ka05, &ka05, &un05,
        &don075, &don025, &don025, &don025, &don025, &don025, &don05, &don05, &don1,

        // changing tempo?
        &don1, &un05, &don05, &don05, &don05, &don05, &don05,
        &don05, &ka025, &ka025, &ka05, &ka05, &ka1, &un1,

        //
        &don1, &ka1, &don05, &don05, &ka1,
        &don1, &ka05, &ka05, &don1, &un1,

        &don1, &ka05, &ka05, &don025, &don025, &don05, &ka1,
        &don1, &ka05, &ka05, &don1, &un1,

        &don1, &ka1, &don05, &don05, &ka1,
        &don1, &ka05, &ka05, &don1, &un1,

        &don1, &ka05, &ka05, &don025, &don025, &don05, &ka1,
        &don025, &don025, &don05, &don025, &don025, &don05, &don1, &un1,

        //
        &don05, &don025, &don025, &don1, &ka05, &ka05, &ka05, &ka05,
        &don05, &don025, &don025, &don1, &ka05, &ka05, &ka1,

        &don05, &don025, &don025, &don1, &ka05, &ka05, &ka05, &ka05,
        &don1, &un05, &don025, &don025, &don1, &un1,

        &don1, &ka1, &don05, &don05, &ka1,
        &don1, &ka05, &ka05, &don1, &un1,

        &don1, &ka05, &ka05, &don025, &don025, &don05, &ka1,
        &don025, &don025, &don05, &don025, &don025, &don05, &don1, &un1,

        &don05, &don025, &don025, &don1, &ka05, &ka05, &ka05, &ka05,
        &don05, &don025, &don025, &don1, &ka05, &ka05, &ka1,

        &don05, &don025, &don025, &don1, &ka05, &ka05, &ka05, &ka05,
        &don1, &un05, &don025, &don025, &don1, &un1,

        &don025, &don025, &don025, &don025, &don05, &ka05, &don025, &don025, &don025, &don025, &don05, &ka05,
        &don025, &don025, &don025, &don025, &don05, &ka05, &ka1, &un1,

        &don025, &don025, &don025, &don025, &don1, &don025, &don025, &don025, &don025, &don1,
        &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &don1,

        //
        &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &don1,
        &don025, &don025, &don025, &don025, &don05, &don05, &don1, &un05, &don025, &don025,

        &don05, &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &don025, &don025,
        &don05, &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &un05,

        &don05, &ka05, &ka05, &un05, &don05, &ka05, &ka05, &un05,
        &don05, &ka05, &don05, &ka05, &don1, &un1,

        &don05, &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &don025, &don025,
        &don05, &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &un05,

        &don05, &ka05, &ka05, &un05, &don05, &ka05, &ka05, &un05,
        &don075, &don025, &don025, &don025, &don025, &don025, &don05, &don05, &don1
    };

    Producer* source = new TaikoSource(note_seq, sizeof(note_seq)/sizeof(note*), 119.9);

    */

    button_t menu_bs[] = {
        /*
        START, START, START, START, START, START,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        LEFT, LEFT, LEFT, LEFT, LEFT, LEFT,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        */
        CIRCLE, CIRCLE,
    };

    Producer* menu = new OnetimeSource(menu_bs, sizeof(menu_bs) / sizeof(button_t));

    // Koibumi2000
    note* note_seq[] = {
        &un1, &un1, &un1, &un1,
        &un1, &un1, &un05, &dondai05, &un1,

        &don05, &don05, &un1, &un1, &un1,
        &un1, &un1, &un1, &un1,

        &don05, &don05, &un1, &un1, &un1,
        &dondai1, &un1, &dondai1, &un1,

        //
        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don1,
        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don1,

        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don1,
        &don05, &don05, &ka05, &ka05, &don05, &don05, &ka1,

        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don1,
        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don1,

        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don1,
        &don05, &don05, &ka05, &ka05, &don05, &don05, &ka1,

        //
        &dondai1, &un1, &don025, &don025, &don025, &don025, &don1, //

        //
        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don05, &ka05,
        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don05, &ka05,

        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don05, &ka05,
        &don05, &don05, &ka05, &ka05, &don05, &don05, &ka1,

        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don05, &ka05,
        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don05, &ka05,

        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don05, &ka05,
        &don05, &ka05, &don05, &ka05, &don05, &kadai05, &un1,

        //
        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don05, &ka05,
        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don05, &ka05,

        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don05, &ka05,
        &don05, &ka05, &don05, &ka05, &don05, &kadai05, &kadai05, &kadai05,

        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don05, &ka05,
        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don05, &ka05,

        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don05, &ka05,
        &don05, &ka05, &don05, &ka05, &don025, &don025, &don025, &don025, &don1,

        //
        &don025, &don025, &don05, &un05, &don025, &don025, &don05, &un05, &dondai1,
        &don025, &don025, &don05, &un05, &don025, &don025, &don05, &un05, &dondai1,

        &don025, &don025, &don05, &un05, &don025, &don025, &don05, &un05, &kadai1,
        &don025, &don025, &don05, &un05, &don025, &don025, &don05, &un05, &kadai1,

        &don025, &don025, &don05, &un05, &ka025, &ka025, &ka05, &un05, &dondai1,
        &don025, &don025, &don05, &un05, &ka025, &ka025, &ka05, &un05, &dondai1,

        &don025, &don025, &don05, &un05, &don025, &don025, &don05, &un05, &kadai1,
        &don025, &don025, &don05, &un05, &don025, &don025, &don05, &un05, &kadai1,

        //
        &don05, &don05, &don1, &don05, &don025, &don025, &don05, &don05,
        &don05, &don05, &don1, &don05, &don025, &don025, &don05, &don05,

        &don05, &don05, &don1, &don05, &don025, &don025, &don05, &don05,
        &don05, &don025, &don025, &don05, &don05, &don05, &don025, &don025, &don05, &don05,

        &don05, &ka05, &don05, &ka05, &don05, &don025, &don025, &don05, &don05,
        &don05, &ka05, &don05, &ka05, &don05, &don025, &don025, &don05, &don05,

        &don05, &ka05, &don05, &ka05, &don05, &don025, &don025, &don05, &ka05,
        &don05, &don025, &don025, &don05, &ka05, &don05, &ka025, &ka025, &ka05, &ka05,

        //
        &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &don05, &don05,
        &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &don05, &don05,

        &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &don05, &don05,
        &don05, &don025, &don025, &don025, &don025, &don05, &don05, &don025, &don025, &don025, &don025,&don05,

        &don025, &don025, &don05, &ka05, &ka05, &don025, &don025, &don05, &ka05, &ka05,
        &don025, &don025, &don05, &ka05, &ka05, &don025, &don025, &don05, &ka05, &ka05,

        &don025, &don025, &don05, &ka05, &ka05, &don025, &don025, &don05, &ka05, &ka05,
        &don025, &don025, &don05, &ka025, &ka025, &ka05, &don025, &don025, &don05, &dondai1,

        // irregular time
        &don05, &don1, &don1, &don1, &don05, &un05, &don05, &don05, &don05, &don1, &don05, &don05,
        &un05, &don1, &don1, &don1, &don05, &don05, &don05, &don1, // ?

        &don05, &don1, &don1, &don05, &don05, &don05, &un05, &ka025, &ka025, &ka05, &ka025, &ka025, &ka1, &don05, &don05,
        &un05, &don1, &don05, &don05, &don05, &un05, &ka025, &ka025, &ka05, &ka025, &ka025, &ka05, &un05,

        &don05, &don025, &don025, &don05, &don1, &don1, &ka025, &ka025, &ka05, &ka025, &ka025, &ka05, &don025, &don025, &don1, &don05, &don1, &don1, &don1, &ka025, &ka025, &ka05, &ka025, &ka025, &ka05, &don05, &don05, &don05,

        // normal time
        &don1, &ka1, &don1, &ka1, &don05, &don05, &ka05, &ka05, &don05, &don05, &ka1,
        &don025, &don025, &don05, &ka025, &ka025, &ka05, &don025, &don025, &don05, &ka025, &ka025, &ka05, &don1, &un1, &un05, &don025, &don025, &don05, &don05,

        &don1, &ka1, &don1, &ka1, &don05, &don05, &ka05, &ka05, &don05, &don05, &ka1,
        &don025, &don025, &don025, &don025, &ka025, &ka025, &ka05, &don025, &don025, &don025, &don025, &ka025, &ka025, &ka05, &don025, &don025, &don025, &don025, &ka025, &ka025, &ka05, &don05, &don05, &don05, &don05,

        &don1, &ka1, &don1, &ka1, &dondai1, &kadai1, &dondai1, &kadai1,
        &don025, &don025, &don025, &don025, &ka025, &ka025, &ka025, &ka025,
        &don025, &don025, &don025, &don025, &ka025, &ka025, &ka025, &ka025,
        &don025, &don025, &don025, &don025, &ka025, &ka025, &ka025, &ka025,
        &don025, &don025, &don025, &don025, &ka025, &ka025, &ka05,

        &renda2, &un05, &don025, &don025, &don1,

        // switch (tatsujin)
        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don05, &ka05,
        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don05, &ka05,

        &don05, &ka05, &don05, &ka05, &don05, &ka05, &don05, &ka05,
        &don05, &ka05, &don05, &ka05, &don05, &kadai05, &un05, &kadai05,

        //
        &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &don05, &don05,
        &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &don05, &don05,

        &don025, &don025, &don05, &don025, &don025, &don05, &don05, &don05, &don05, &don05,
        &don05, &don05, &don05, &don05, &don05, &don025, &don025, &don025, &don025, &don05,
        //
        &don025, &don025, &don05, &ka025, &ka025, &ka05, &don025, &don025, &don05, &ka025, &ka025, &ka05,
        &don025, &don025, &don05, &ka025, &ka025, &ka05, &don025, &don025, &don05, &ka025, &ka025, &ka05,

        &don025, &don025, &don025, &don025, &ka025, &ka025, &ka025, &ka025, &don025, &don025, &don025, &don025, &ka025, &ka025, &ka025, &ka025,
        &don025, &don025, &don05, &ka05, &ka05, &don025, &don025, &don025, &don025, &don05, &ka05,
        //
        &don025, &don025, &don025, &don025, &ka025, &ka025, &ka05, &don025, &don025, &don025, &don025, &ka025, &ka025, &ka05,
        &don025, &don025, &don025, &don025, &ka025, &ka025, &ka05, &don025, &don025, &don025, &don025, &ka025, &ka025, &ka05,

        &don025, &don025, &ka025, &ka025, &don025, &don025, &ka025, &ka025, &don025, &don025, &ka025, &ka025, &don025, &don025, &ka025, &ka025,
        &don05, &don05, &don05, &don05, &don025, &don025, &don025, &don025, &don025, &don025, &don05,

        // irregular time
        &don05, &don05, &un05, &don05, &un05, &don05, &un05, &don05, &un05, &don05, &don05, &don05, &don1,
        &don05, &don05, &un05, &don05, &un05, &don05, &un05, &don05, &un05, &don05, &don05, &don05, &don1,

        // last
        &dondai05, &dondai05
    };

    Producer* taiko = new TaikoSource(note_seq, sizeof(note_seq)/sizeof(note*), 200);

    Producer* delayed = new DelayFlow(taiko, 9.0827); // 3.49

    Producer* src_seq[] = { menu, delayed };
    Producer* source = new SequentialFlow(src_seq, 2);

    FLL fll(source);
    fll.run();

}