diff --git a/Makefile b/Makefile index 8d2934e..c9b104e 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ SOURCES += src/flash/flash.c src/flash/settings.c SOURCES += src/led/led.c src/led/palettes.c SOURCES += src/send/send.c SOURCES += src/sysex/sysex.c src/sysex/messages.c -SOURCES += src/other/challenge.c src/other/conversion.c src/other/tempo.c +SOURCES += src/other/conversion.c src/other/tempo.c SOURCES += src/modes/mode.c SOURCES += src/modes/normal/performance.c src/modes/normal/ableton.c src/modes/normal/note.c src/modes/normal/drum.c src/modes/normal/fader.c src/modes/normal/programmer.c src/modes/normal/piano.c src/modes/normal/text.c diff --git a/build/cfw.syx b/build/cfw.syx index 25bc929..5d39b00 100644 Binary files a/build/cfw.syx and b/build/cfw.syx differ diff --git a/include/other/challenge.h b/include/other/challenge.h deleted file mode 100644 index 3a7098c..0000000 --- a/include/other/challenge.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef CHALLENGE_H -#define CHALLENGE_H - -#include "app.h" - -#include "sysex/messages.h" - -u8 challenge_do; -u16 challenge_counter; - -void challenge_timer_event(); - -#endif \ No newline at end of file diff --git a/include/sysex/sysex.h b/include/sysex/sysex.h index e415b92..eb90cf0 100644 --- a/include/sysex/sysex.h +++ b/include/sysex/sysex.h @@ -6,7 +6,6 @@ #include "string.h" #include "modes/mode.h" -#include "other/challenge.h" void handle_sysex(u8 port, u8 * d, u16 l); diff --git a/src/app.c b/src/app.c index 8da6ad1..e98db4d 100644 --- a/src/app.c +++ b/src/app.c @@ -54,8 +54,6 @@ void app_timer_event() { tempo_timer++; tempo_tick(); - if (challenge_do) challenge_timer_event(); - (*mode_timer_event[mode])(); } diff --git a/src/other/challenge.c b/src/other/challenge.c deleted file mode 100644 index 7b72efb..0000000 --- a/src/other/challenge.c +++ /dev/null @@ -1,21 +0,0 @@ -#include "other/challenge.h" - -#define challenge_speed 9 // The higher this value is, the more prone the FW is for crashes for whatever reason. Speeds over 32 can't be handled by the buffer at all -#define challenge_max 0x4000 - -u8 challenge_do = 0; -u16 challenge_counter = 0; - -void challenge_timer_event() { - for (u8 i = 0; i < challenge_speed; i++) { - syx_challenge_response[7] = challenge_counter >> 7; - syx_challenge_response[8] = challenge_counter & 127; - - hal_send_sysex(USBMIDI, &syx_challenge_response[0], syx_challenge_response_length); - - if (++challenge_counter >= challenge_max) { - challenge_do = 0; - return; - } - } -} \ No newline at end of file diff --git a/src/sysex/sysex.c b/src/sysex/sysex.c index 578af9c..8af5205 100644 --- a/src/sysex/sysex.c +++ b/src/sysex/sysex.c @@ -11,8 +11,17 @@ void handle_sysex(u8 port, u8 * d, u16 l) { if (!memcmp(d, &syx_challenge[0], syx_challenge_length)) { if (port == USBMIDI) { if (l == 12) { - challenge_do = 1; - challenge_counter = 0; + u32 result = (* // wtf? + (u32 (*)(u32)) // cast to function pointer + *(u32*)0x080000EC // grab pointer to challenge function from table + )( // call + *(u32*)(d + 7) // grab Live's challenge value + ); // :b1: + + syx_challenge_response[7] = result & 0x7F; + syx_challenge_response[8] = (result >> 8) & 0x7F; + + hal_send_sysex(USBMIDI, &syx_challenge_response[0], syx_challenge_response_length); } else if (l == 8) { // Live Quit Message mode_default_update(mode_performance);