blob: 4f174f3adb4c3a8a01c27a9f3cf7e7e3035099e8 [file]
#pragma once
#include <functional>
#include "executable.hpp"
#include "engine/api_private.hpp"
// this is the 32blit's flash erase size, some parts of the API depend on this...
static constexpr unsigned int game_block_size = 64 * 1024;
RawMetadata *get_running_game_metadata();
void create_type_handler_list();
bool launch_file(const char *path);
blit::CanLaunchResult can_launch(const char *path);
void launch_pre_init();
void delayed_launch();
void list_installed_games(std::function<void(const uint8_t *, uint32_t, uint32_t)> callback);
void erase_game(uint32_t offset);
void *get_type_handler_metadata(const char *filetype);
const char *get_launch_path();
class BlitWriter final {
public:
void init(uint32_t file_len);
bool write(const uint8_t *buf, uint32_t len);
void cleanup_duplicates();
uint32_t get_offset() const;
uint32_t get_length() const;
uint32_t get_remaining() const;
uint32_t get_flash_offset() const;
private:
bool prepare_write(const uint8_t *buf);
uint32_t file_len;
uint32_t file_offset;
uint32_t flash_offset;
};