add support for modifed game
This commit is contained in:
parent
3b2f8957e4
commit
5ffc2b609b
@ -26,6 +26,8 @@
|
|||||||
#include "steps/p002_step5.h"
|
#include "steps/p002_step5.h"
|
||||||
#include "steps/p002_step6.h"
|
#include "steps/p002_step6.h"
|
||||||
|
|
||||||
|
bool play_modified;
|
||||||
|
|
||||||
static const char *TAG = "main";
|
static const char *TAG = "main";
|
||||||
uint32_t initial_game_time = 90*60*1000 + 1000;
|
uint32_t initial_game_time = 90*60*1000 + 1000;
|
||||||
uint32_t skip_to_step = 0;
|
uint32_t skip_to_step = 0;
|
||||||
|
|||||||
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
|
|
||||||
|
extern bool play_modified;
|
||||||
|
|
||||||
constexpr size_t N_STEPS = 6;
|
constexpr size_t N_STEPS = 6;
|
||||||
|
|
||||||
#endif /* MAIN_H */
|
#endif /* MAIN_H */
|
||||||
@ -1,4 +1,5 @@
|
|||||||
#include "p001_step4.h"
|
#include "p001_step4.h"
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
__attribute__((unused))
|
__attribute__((unused))
|
||||||
static const char *TAG = "step4";
|
static const char *TAG = "step4";
|
||||||
@ -233,8 +234,11 @@ bool play_game(int time, int required_score) {
|
|||||||
target_score = required_score;
|
target_score = required_score;
|
||||||
score = 0;
|
score = 0;
|
||||||
update_score();
|
update_score();
|
||||||
// set_module_time(time);
|
|
||||||
// start_module_timer();
|
if (!play_modified) {
|
||||||
|
set_module_time(time);
|
||||||
|
start_module_timer();
|
||||||
|
}
|
||||||
|
|
||||||
clear_board();
|
clear_board();
|
||||||
|
|
||||||
@ -272,7 +276,8 @@ bool play_game(int time, int required_score) {
|
|||||||
show_board();
|
show_board();
|
||||||
|
|
||||||
if (score >= required_score) {
|
if (score >= required_score) {
|
||||||
// stop_module_timer();
|
if (!play_modified)
|
||||||
|
stop_module_timer();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -307,18 +312,19 @@ bool play_game(int time, int required_score) {
|
|||||||
show_board();
|
show_board();
|
||||||
|
|
||||||
if (score >= required_score) {
|
if (score >= required_score) {
|
||||||
// stop_module_timer();
|
if (!play_modified)
|
||||||
|
stop_module_timer();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (get_module_time() <= 0) {
|
if ((!play_modified) && get_module_time() <= 0) {
|
||||||
// stop_module_timer();
|
stop_module_timer();
|
||||||
// strike("Out of time");
|
strike("Out of time");
|
||||||
// return false;
|
return false;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// if (get_switch_flipped(&switch_)) {
|
// if (get_switch_flipped(&switch_)) {
|
||||||
// printf("%d\n", piece);
|
// printf("%d\n", piece);
|
||||||
@ -334,7 +340,8 @@ bool play_game(int time, int required_score) {
|
|||||||
|
|
||||||
// game over
|
// game over
|
||||||
ESP_LOGI(TAG, "Game Over. Score: %d", score);
|
ESP_LOGI(TAG, "Game Over. Score: %d", score);
|
||||||
// stop_module_timer();
|
if (!play_modified)
|
||||||
|
stop_module_timer();
|
||||||
strike("Out of room");
|
strike("Out of room");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -390,13 +397,16 @@ void p001_step4() {
|
|||||||
do_star_codes(&star_code, 1);
|
do_star_codes(&star_code, 1);
|
||||||
init_screen();
|
init_screen();
|
||||||
|
|
||||||
while (!play_game(4*60*1000, 2)) fail();
|
int lines_1 = play_modified ? 2 : 2;
|
||||||
|
int lines_2 = play_modified ? 5 : 4;
|
||||||
|
int lines_3 = play_modified ? 12 : 8;
|
||||||
|
while (!play_game(4*60*1000, lines_1)) fail();
|
||||||
play_clip_wav(MOUNT_POINT "/partdone.wav", true, false, 0, 0);
|
play_clip_wav(MOUNT_POINT "/partdone.wav", true, false, 0, 0);
|
||||||
complete();
|
complete();
|
||||||
while (!play_game(4*60*1000, 5)) fail();
|
while (!play_game(4*60*1000, lines_2)) fail();
|
||||||
play_clip_wav(MOUNT_POINT "/partdone.wav", true, false, 0, 0);
|
play_clip_wav(MOUNT_POINT "/partdone.wav", true, false, 0, 0);
|
||||||
complete();
|
complete();
|
||||||
while (!play_game(7*60*1000, 12)) fail();
|
while (!play_game(6*60*1000, lines_3)) fail();
|
||||||
play_clip_wav(MOUNT_POINT "/stepdone.wav", true, false, 1, 0);
|
play_clip_wav(MOUNT_POINT "/stepdone.wav", true, false, 1, 0);
|
||||||
complete();
|
complete();
|
||||||
|
|
||||||
|
|||||||
@ -7,6 +7,7 @@
|
|||||||
#define TIME_BLINK 35'000
|
#define TIME_BLINK 35'000
|
||||||
#define TIME_UMMM 35'000
|
#define TIME_UMMM 35'000
|
||||||
#define TIME_BLANK 40'000
|
#define TIME_BLANK 40'000
|
||||||
|
#define TIME_WHAT 60'000
|
||||||
#define TIME_PLINK 40'000
|
#define TIME_PLINK 40'000
|
||||||
|
|
||||||
__attribute__((unused))
|
__attribute__((unused))
|
||||||
@ -650,100 +651,250 @@ void p001_step5(void) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 7: {
|
case 7: {
|
||||||
lcd_print("Plink");
|
if (play_modified) {
|
||||||
set_module_time(TIME_PLINK);
|
// do PLINK
|
||||||
start_module_timer();
|
lcd_print("Plink");
|
||||||
|
set_module_time(TIME_PLINK);
|
||||||
|
start_module_timer();
|
||||||
|
|
||||||
std::uniform_int_distribution<> indicator_number_dist(0, 4);
|
std::uniform_int_distribution<> indicator_number_dist(0, 4);
|
||||||
|
|
||||||
// ESP_LOGI(TAG, "Green: %i, Red: %i, Yellow: %i, Blue: %i", green_indicators, red_indicators, yellow_indicators, blue_indicators);
|
// ESP_LOGI(TAG, "Green: %i, Red: %i, Yellow: %i, Blue: %i", green_indicators, red_indicators, yellow_indicators, blue_indicators);
|
||||||
|
|
||||||
const uint32_t COLORS[] = {
|
const uint32_t COLORS[] = {
|
||||||
LEDColor::LED_COLOR_GREEN,
|
LEDColor::LED_COLOR_GREEN,
|
||||||
LEDColor::LED_COLOR_RED,
|
LEDColor::LED_COLOR_RED,
|
||||||
LEDColor::LED_COLOR_YELLOW,
|
LEDColor::LED_COLOR_YELLOW,
|
||||||
LEDColor::LED_COLOR_BLUE,
|
LEDColor::LED_COLOR_BLUE,
|
||||||
LEDColor::LED_COLOR_PINK,
|
LEDColor::LED_COLOR_PINK,
|
||||||
};
|
};
|
||||||
|
|
||||||
int solved_times = 0;
|
int solved_times = 0;
|
||||||
bool failed = false;
|
bool failed = false;
|
||||||
while (solved_times < 3 && !failed) {
|
while (solved_times < 3 && !failed) {
|
||||||
int indicator_numbers[5] = {indicator_number_dist(gen), indicator_number_dist(gen), indicator_number_dist(gen), indicator_number_dist(gen), indicator_number_dist(gen)};
|
int indicator_numbers[5] = {indicator_number_dist(gen), indicator_number_dist(gen), indicator_number_dist(gen), indicator_number_dist(gen), indicator_number_dist(gen)};
|
||||||
|
|
||||||
|
std::vector<int> led_options = all_leds;
|
||||||
|
for (int i = 0; i < 5; i++) {
|
||||||
|
set_unique_leds(led_options, indicator_numbers[i], COLORS[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
leds_flush();
|
||||||
|
|
||||||
|
std::uniform_int_distribution<> answer_color_dist(0, 4);
|
||||||
|
|
||||||
|
std::map<int, std::string> color_name_map = {
|
||||||
|
{0, "Green"},
|
||||||
|
{1, "Red"},
|
||||||
|
{2, "Yellow"},
|
||||||
|
{3, "Blue"},
|
||||||
|
{4, "Pink"},
|
||||||
|
};
|
||||||
|
|
||||||
|
int answer_color = answer_color_dist(gen);
|
||||||
|
|
||||||
|
std::string color_string = color_name_map[answer_color];
|
||||||
|
std::string answer_num = std::to_string(indicator_numbers[answer_color]);
|
||||||
|
|
||||||
|
// ESP_LOGI(TAG, "color string: %s", color_string.c_str());
|
||||||
|
|
||||||
|
lcd_print(1, 2, color_string.c_str());
|
||||||
|
|
||||||
|
std::string entered_string;
|
||||||
|
|
||||||
|
KeypadKey key;
|
||||||
|
while (1) {
|
||||||
|
if (get_keypad_pressed(&key)) {
|
||||||
|
bool failed = false;
|
||||||
|
|
||||||
|
if (key == KeypadKey::star) {
|
||||||
|
// clear
|
||||||
|
entered_string = "";
|
||||||
|
} else if (key == KeypadKey::pound) {
|
||||||
|
// submit
|
||||||
|
if (entered_string != answer_num) {
|
||||||
|
strike("Incorrect answer!");
|
||||||
|
failed = true;
|
||||||
|
} else {
|
||||||
|
solved_correctly = true;;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
entered_string += char_of_keypad_key(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (failed) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
lcd_clear();
|
||||||
|
lcd_print(1, 1, "Plink");
|
||||||
|
lcd_print(1, 2, color_string.c_str());
|
||||||
|
lcd_print(1, 3, entered_string.c_str());
|
||||||
|
}
|
||||||
|
if (get_module_time() <= 0) {
|
||||||
|
strike("Ran out of time!");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(10));
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
if (!failed) {
|
||||||
|
solved_correctly = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// do WHAT
|
||||||
|
lcd_print(1, 1, "What");
|
||||||
|
set_module_time(TIME_WHAT);
|
||||||
|
start_module_timer();
|
||||||
|
|
||||||
|
std::uniform_int_distribution<> math_number_dist(1, 9);
|
||||||
|
|
||||||
|
std::vector<float> math_numbers;
|
||||||
|
std::vector<int> math_operations;
|
||||||
|
|
||||||
|
std::map<int, char> operation_map = {
|
||||||
|
{0, '+'},
|
||||||
|
{1, '-'},
|
||||||
|
{2, '*'},
|
||||||
|
{3, '/'},
|
||||||
|
};
|
||||||
|
|
||||||
|
int expression_answer = -1;
|
||||||
|
std::string display_expression;
|
||||||
|
|
||||||
|
while (expression_answer < 0) {
|
||||||
|
math_numbers = {static_cast<float>(math_number_dist(gen)), static_cast<float>(math_number_dist(gen)), static_cast<float>(math_number_dist(gen)), static_cast<float>(math_number_dist(gen))};
|
||||||
|
std::vector<int> possible_math_operations = {0, 1, 2, 3};
|
||||||
|
math_operations = unique_values(possible_math_operations, 3);
|
||||||
|
|
||||||
|
display_expression = std::to_string(static_cast<int>(math_numbers[0]));
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
display_expression += operation_map[math_operations[i]];
|
||||||
|
display_expression += std::to_string(static_cast<int>(math_numbers[i + 1]));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Solve
|
||||||
|
for (int j = 0; j < 3; j++) {
|
||||||
|
bool found = false;
|
||||||
|
for (int i = 0; i < math_operations.size(); i++) {
|
||||||
|
if (math_operations[i] == 2) {
|
||||||
|
// ESP_LOGI(TAG, "i = %i, condensing %f * %f to %f", i, math_numbers[i], math_numbers[i + 1], (math_numbers[i] * math_numbers[i+1]));
|
||||||
|
math_numbers[i] = math_numbers[i] * math_numbers[i + 1];
|
||||||
|
math_numbers.erase(math_numbers.begin() + i + 1);
|
||||||
|
math_operations.erase(math_operations.begin() + i);
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
} else if (math_operations[i] == 3) {
|
||||||
|
// ESP_LOGI(TAG, "i = %i, condensing %f / %f to %f", i, math_numbers[i], math_numbers[i + 1], (math_numbers[i] / math_numbers[i+1]));
|
||||||
|
math_numbers[i] = math_numbers[i] / math_numbers[i + 1];
|
||||||
|
math_numbers.erase(math_numbers.begin() + i + 1);
|
||||||
|
math_operations.erase(math_operations.begin() + i);
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (found) continue;
|
||||||
|
for (int i = 0; i < math_operations.size(); i++) {
|
||||||
|
if (math_operations[i] == 0) {
|
||||||
|
// ESP_LOGI(TAG, "i = %i, condensing %f + %f to %f", i, math_numbers[i], math_numbers[i + 1], (math_numbers[i] + math_numbers[i+1]));
|
||||||
|
math_numbers[i] = math_numbers[i] + math_numbers[i + 1];
|
||||||
|
math_numbers.erase(math_numbers.begin() + i + 1);
|
||||||
|
math_operations.erase(math_operations.begin() + i);
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
} else if (math_operations[i] == 1) {
|
||||||
|
// ESP_LOGI(TAG, "i = %i, condensing %f - %f to %f", i, math_numbers[i], math_numbers[i + 1], (math_numbers[i] - math_numbers[i+1]));
|
||||||
|
math_numbers[i] = math_numbers[i] - math_numbers[i + 1];
|
||||||
|
math_numbers.erase(math_numbers.begin() + i + 1);
|
||||||
|
math_operations.erase(math_operations.begin() + i);
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expression_answer = static_cast<int>(std::floor(math_numbers[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
// display expression
|
||||||
|
lcd_print(2, 1, display_expression.c_str());
|
||||||
|
|
||||||
|
// set LEDs
|
||||||
|
const uint32_t COLORS[] = {
|
||||||
|
LEDColor::LED_COLOR_BLUE,
|
||||||
|
LEDColor::LED_COLOR_RED,
|
||||||
|
LEDColor::LED_COLOR_GREEN,
|
||||||
|
LEDColor::LED_COLOR_YELLOW,
|
||||||
|
};
|
||||||
|
|
||||||
|
std::uniform_int_distribution<> add_sub_indicator_dist(1, 6);
|
||||||
|
std::uniform_int_distribution<> mult_div_indicator_dist(1, 3);
|
||||||
|
|
||||||
|
int modifier_indicators[4] = {add_sub_indicator_dist(gen), add_sub_indicator_dist(gen), mult_div_indicator_dist(gen), mult_div_indicator_dist(gen)};
|
||||||
|
|
||||||
|
|
||||||
|
while ((((expression_answer + (modifier_indicators[0] * 3) - modifier_indicators[1]) * std::pow(3, modifier_indicators[2])) / std::pow(2, modifier_indicators[3])) < 0) {
|
||||||
|
modifier_indicators[0] = add_sub_indicator_dist(gen);
|
||||||
|
modifier_indicators[1] = add_sub_indicator_dist(gen);
|
||||||
|
modifier_indicators[2] = mult_div_indicator_dist(gen);
|
||||||
|
modifier_indicators[3] = mult_div_indicator_dist(gen);
|
||||||
|
}
|
||||||
|
|
||||||
|
expression_answer += modifier_indicators[0] * 3;
|
||||||
|
expression_answer -= modifier_indicators[1];
|
||||||
|
expression_answer *= std::pow(3, modifier_indicators[2]);
|
||||||
|
expression_answer /= std::pow(2, modifier_indicators[3]);
|
||||||
|
|
||||||
std::vector<int> led_options = all_leds;
|
std::vector<int> led_options = all_leds;
|
||||||
for (int i = 0; i < 5; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
set_unique_leds(led_options, indicator_numbers[i], COLORS[i]);
|
set_unique_leds(led_options, modifier_indicators[i], COLORS[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
leds_flush();
|
leds_flush();
|
||||||
|
|
||||||
std::uniform_int_distribution<> answer_color_dist(0, 4);
|
std::string answer_string = std::to_string(expression_answer);
|
||||||
|
std::string entered_string = "";
|
||||||
|
|
||||||
std::map<int, std::string> color_name_map = {
|
ESP_LOGI(TAG, "Solved full answer: %s", answer_string.c_str());
|
||||||
{0, "Green"},
|
|
||||||
{1, "Red"},
|
|
||||||
{2, "Yellow"},
|
|
||||||
{3, "Blue"},
|
|
||||||
{4, "Pink"},
|
|
||||||
};
|
|
||||||
|
|
||||||
int answer_color = answer_color_dist(gen);
|
|
||||||
|
|
||||||
std::string color_string = color_name_map[answer_color];
|
|
||||||
std::string answer_num = std::to_string(indicator_numbers[answer_color]);
|
|
||||||
|
|
||||||
// ESP_LOGI(TAG, "color string: %s", color_string.c_str());
|
|
||||||
|
|
||||||
lcd_print(1, 2, color_string.c_str());
|
|
||||||
|
|
||||||
std::string entered_string;
|
|
||||||
|
|
||||||
KeypadKey key;
|
KeypadKey key;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
if (get_keypad_pressed(&key)) {
|
if (get_keypad_pressed(&key)) {
|
||||||
bool failed = false;
|
|
||||||
|
|
||||||
if (key == KeypadKey::star) {
|
if (key == KeypadKey::star) {
|
||||||
// clear
|
// clear
|
||||||
entered_string = "";
|
entered_string = "";
|
||||||
} else if (key == KeypadKey::pound) {
|
} else if (key == KeypadKey::pound) {
|
||||||
// submit
|
// submit
|
||||||
if (entered_string != answer_num) {
|
if (entered_string != answer_string) {
|
||||||
strike("Incorrect answer!");
|
strike("Incorrect answer!");
|
||||||
failed = true;
|
|
||||||
} else {
|
} else {
|
||||||
solved_correctly = true;;
|
solved_correctly = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
entered_string += char_of_keypad_key(key);
|
entered_string += char_of_keypad_key(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (failed) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
lcd_print(1, 1, "Plink");
|
lcd_print(1, 1, "What");
|
||||||
lcd_print(1, 2, color_string.c_str());
|
lcd_print(2, 1, display_expression.c_str());
|
||||||
lcd_print(1, 3, entered_string.c_str());
|
lcd_print(3, 1, entered_string.c_str());
|
||||||
}
|
}
|
||||||
if (get_module_time() <= 0) {
|
if (get_module_time() <= 0) {
|
||||||
strike("Ran out of time!");
|
strike("Ran out of time!");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
vTaskDelay(pdMS_TO_TICKS(10));
|
vTaskDelay(pdMS_TO_TICKS(10));
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
if (!failed) {
|
|
||||||
solved_correctly = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
|
|||||||
@ -47,6 +47,12 @@ static void replay_last() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void do_p001() {
|
static void do_p001() {
|
||||||
|
play_modified = false;
|
||||||
|
puzzle = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void do_p001_modified() {
|
||||||
|
play_modified = true;
|
||||||
puzzle = 1;
|
puzzle = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,10 +68,16 @@ void step0() {
|
|||||||
StarCodeHandler star_codes[] = {
|
StarCodeHandler star_codes[] = {
|
||||||
{
|
{
|
||||||
.code = "*9819",
|
.code = "*9819",
|
||||||
.display_text = "Start P001",
|
.display_text = "Start P001DH",
|
||||||
.should_exit = true,
|
.should_exit = true,
|
||||||
.callback = do_p001,
|
.callback = do_p001,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.code = "*9818",
|
||||||
|
.display_text = "Start P001DM",
|
||||||
|
.should_exit = true,
|
||||||
|
.callback = do_p001_modified,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.code = "*3141",
|
.code = "*3141",
|
||||||
.display_text = "Start P002",
|
.display_text = "Start P002",
|
||||||
|
|||||||
BIN
resources/correct.raw
Normal file
BIN
resources/correct.raw
Normal file
Binary file not shown.
BIN
resources/diffused.raw
Normal file
BIN
resources/diffused.raw
Normal file
Binary file not shown.
BIN
resources/flash.raw
Normal file
BIN
resources/flash.raw
Normal file
Binary file not shown.
BIN
resources/high-1.raw
Normal file
BIN
resources/high-1.raw
Normal file
Binary file not shown.
BIN
resources/high-3.raw
Normal file
BIN
resources/high-3.raw
Normal file
Binary file not shown.
BIN
resources/high-6.raw
Normal file
BIN
resources/high-6.raw
Normal file
Binary file not shown.
BIN
resources/incorrect.raw
Normal file
BIN
resources/incorrect.raw
Normal file
Binary file not shown.
BIN
resources/low-1.raw
Normal file
BIN
resources/low-1.raw
Normal file
Binary file not shown.
BIN
resources/low-3.raw
Normal file
BIN
resources/low-3.raw
Normal file
Binary file not shown.
BIN
resources/low-6.raw
Normal file
BIN
resources/low-6.raw
Normal file
Binary file not shown.
BIN
resources/partdone.raw
Normal file
BIN
resources/partdone.raw
Normal file
Binary file not shown.
BIN
resources/piano.raw
Normal file
BIN
resources/piano.raw
Normal file
Binary file not shown.
BIN
resources/ready.raw
Normal file
BIN
resources/ready.raw
Normal file
Binary file not shown.
BIN
resources/startup.raw
Normal file
BIN
resources/startup.raw
Normal file
Binary file not shown.
BIN
resources/stepdone.raw
Normal file
BIN
resources/stepdone.raw
Normal file
Binary file not shown.
BIN
resources/tetris.raw
Normal file
BIN
resources/tetris.raw
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user