flip_world.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. #include <flip_world.h>
  2. char *fps_choices_str[] = {"30", "60", "120", "240"};
  3. uint8_t fps_index = 0;
  4. char *yes_or_no_choices[] = {"No", "Yes"};
  5. uint8_t screen_always_on_index = 1;
  6. uint8_t sound_on_index = 1;
  7. uint8_t vibration_on_index = 1;
  8. char *player_sprite_choices[] = {"naked", "sword", "axe", "bow"};
  9. uint8_t player_sprite_index = 1;
  10. char *vgm_levels[] = {"-2", "-1", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"};
  11. uint8_t vgm_x_index = 2;
  12. uint8_t vgm_y_index = 2;
  13. uint8_t game_mode_index = 0;
  14. float atof_(const char *nptr) { return (float)strtod(nptr, NULL); }
  15. float atof_furi(const FuriString *nptr) { return atof_(furi_string_get_cstr(nptr)); }
  16. bool is_str(const char *src, const char *dst) { return strcmp(src, dst) == 0; }
  17. bool is_enough_heap(size_t heap_size, bool check_blocks)
  18. {
  19. const size_t min_heap = heap_size + 1024; // 1KB buffer
  20. const size_t min_free = memmgr_get_free_heap();
  21. if (min_free < min_heap)
  22. {
  23. FURI_LOG_E(TAG, "Not enough heap memory: There are %zu bytes free.", min_free);
  24. return false;
  25. }
  26. if (check_blocks)
  27. {
  28. const size_t max_free_block = memmgr_heap_get_max_free_block();
  29. if (max_free_block < min_heap)
  30. {
  31. FURI_LOG_E(TAG, "Not enough free blocks: %zu bytes", max_free_block);
  32. return false;
  33. }
  34. }
  35. return true;
  36. }