Auto full-combo Koibumi2000 in Taiko no Tatsujin CS5
Dependencies: fll mbed-rtos mbed
taiko.cpp@11:21b3b0494baa, 2015-02-15 (annotated)
- Committer:
- amutake
- Date:
- Sun Feb 15 08:51:56 2015 +0000
- Revision:
- 11:21b3b0494baa
- Parent:
- 10:79bb44beb08b
- Child:
- 12:54aeb978fe9d
no time lag
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 | 11:21b3b0494baa | 15 | case Un: |
amutake | 11:21b3b0494baa | 16 | return 0; |
amutake | 10:79bb44beb08b | 17 | } |
amutake | 10:79bb44beb08b | 18 | return 0; |
amutake | 10:79bb44beb08b | 19 | } |
amutake | 10:79bb44beb08b | 20 | |
amutake | 11:21b3b0494baa | 21 | TaikoSource::TaikoSource(note** ns, int s, float b) |
amutake | 10:79bb44beb08b | 22 | { |
amutake | 10:79bb44beb08b | 23 | note_seq = ns; |
amutake | 10:79bb44beb08b | 24 | size = s; |
amutake | 10:79bb44beb08b | 25 | bpm = b; |
amutake | 10:79bb44beb08b | 26 | index = 0; |
amutake | 10:79bb44beb08b | 27 | frame_i = 0; |
amutake | 11:21b3b0494baa | 28 | lag = 0; |
amutake | 10:79bb44beb08b | 29 | } |
amutake | 10:79bb44beb08b | 30 | |
amutake | 10:79bb44beb08b | 31 | button_t TaikoSource::await() |
amutake | 10:79bb44beb08b | 32 | { |
amutake | 10:79bb44beb08b | 33 | if (index >= size) { |
amutake | 10:79bb44beb08b | 34 | return 0; |
amutake | 10:79bb44beb08b | 35 | } |
amutake | 11:21b3b0494baa | 36 | |
amutake | 10:79bb44beb08b | 37 | note* n = note_seq[index]; |
amutake | 11:21b3b0494baa | 38 | float len = n->length * (60 / bpm); // note length (sec) |
amutake | 10:79bb44beb08b | 39 | float passing = frame_i * FRAME; // passing time since the begining of this note (sec) |
amutake | 11:21b3b0494baa | 40 | |
amutake | 10:79bb44beb08b | 41 | frame_i++; |
amutake | 11:21b3b0494baa | 42 | |
amutake | 10:79bb44beb08b | 43 | button_t btn = 0; |
amutake | 10:79bb44beb08b | 44 | if (passing < len / 2) { // in the former of this note |
amutake | 10:79bb44beb08b | 45 | btn = taiko2button(n->taiko); |
amutake | 11:21b3b0494baa | 46 | } else if (passing + FRAME >= len - lag) { // final frame of this note |
amutake | 10:79bb44beb08b | 47 | frame_i = 0; |
amutake | 10:79bb44beb08b | 48 | index++; |
amutake | 11:21b3b0494baa | 49 | lag = passing + FRAME - (len - lag); |
amutake | 10:79bb44beb08b | 50 | } |
amutake | 10:79bb44beb08b | 51 | return btn; |
amutake | 10:79bb44beb08b | 52 | } |