Auto full-combo Koibumi2000 in Taiko no Tatsujin CS5
Dependencies: fll mbed-rtos mbed
taiko.cpp@10:79bb44beb08b, 2015-02-15 (annotated)
- Committer:
- amutake
- Date:
- Sun Feb 15 06:53:27 2015 +0000
- Revision:
- 10:79bb44beb08b
- Child:
- 11:21b3b0494baa
Create TaikoSource
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
amutake | 10:79bb44beb08b | 1 | // Toolkit for Taiko no Tatsujin |
amutake | 10:79bb44beb08b | 2 | |
amutake | 10:79bb44beb08b | 3 | #include "fll.h" |
amutake | 10:79bb44beb08b | 4 | #include "taiko.h" |
amutake | 10:79bb44beb08b | 5 | |
amutake | 10:79bb44beb08b | 6 | Serial pc(USBTX, USBRX); |
amutake | 10:79bb44beb08b | 7 | |
amutake | 10:79bb44beb08b | 8 | button_t taiko2button(Taiko t) |
amutake | 10:79bb44beb08b | 9 | { |
amutake | 10:79bb44beb08b | 10 | switch (t) { |
amutake | 10:79bb44beb08b | 11 | case Don: |
amutake | 10:79bb44beb08b | 12 | return CIRCLE; |
amutake | 10:79bb44beb08b | 13 | case Ka: |
amutake | 10:79bb44beb08b | 14 | return R1; |
amutake | 10:79bb44beb08b | 15 | } |
amutake | 10:79bb44beb08b | 16 | return 0; |
amutake | 10:79bb44beb08b | 17 | } |
amutake | 10:79bb44beb08b | 18 | |
amutake | 10:79bb44beb08b | 19 | TaikoSource::TaikoSource(note** ns, int s, int b) |
amutake | 10:79bb44beb08b | 20 | { |
amutake | 10:79bb44beb08b | 21 | note_seq = ns; |
amutake | 10:79bb44beb08b | 22 | size = s; |
amutake | 10:79bb44beb08b | 23 | bpm = b; |
amutake | 10:79bb44beb08b | 24 | index = 0; |
amutake | 10:79bb44beb08b | 25 | frame_i = 0; |
amutake | 10:79bb44beb08b | 26 | } |
amutake | 10:79bb44beb08b | 27 | |
amutake | 10:79bb44beb08b | 28 | button_t TaikoSource::await() |
amutake | 10:79bb44beb08b | 29 | { |
amutake | 10:79bb44beb08b | 30 | if (index >= size) { |
amutake | 10:79bb44beb08b | 31 | index = 0; // XXX: remove this line (for debugging) |
amutake | 10:79bb44beb08b | 32 | return 0; |
amutake | 10:79bb44beb08b | 33 | } |
amutake | 10:79bb44beb08b | 34 | |
amutake | 10:79bb44beb08b | 35 | note* n = note_seq[index]; |
amutake | 10:79bb44beb08b | 36 | float len = n->length * (60 / (float)bpm); // note length (sec) |
amutake | 10:79bb44beb08b | 37 | float passing = frame_i * FRAME; // passing time since the begining of this note (sec) |
amutake | 10:79bb44beb08b | 38 | |
amutake | 10:79bb44beb08b | 39 | frame_i++; |
amutake | 10:79bb44beb08b | 40 | |
amutake | 10:79bb44beb08b | 41 | button_t btn = 0; |
amutake | 10:79bb44beb08b | 42 | if (passing < len / 2) { // in the former of this note |
amutake | 10:79bb44beb08b | 43 | btn = taiko2button(n->taiko); |
amutake | 10:79bb44beb08b | 44 | } else if (passing + FRAME >= len) { // final frame of this note |
amutake | 10:79bb44beb08b | 45 | frame_i = 0; |
amutake | 10:79bb44beb08b | 46 | index++; |
amutake | 10:79bb44beb08b | 47 | } |
amutake | 10:79bb44beb08b | 48 | return btn; |
amutake | 10:79bb44beb08b | 49 | } |