#pragma once

#include "holly/region_array.hpp"
#include "ta_multiwriter.hpp"

namespace scene {
  namespace id {
    enum scene_type {
      tracker,
      logo,
      emulator,
      options
    };
  }

  struct scene {
    const uint32_t ta_alloc;
    const struct opb_size opb_size;
    void (* const transfer)(ta_multiwriter& multi);
    void (* const interrupt)();
    void (* const init)();
    int (* const done)();
  };

  extern const scene scenes[];

  extern const scene * current_scene;

  void scene_init(int scene_id);

  void transition();
}
