module gbaid.gba;

import core.time : TickDuration;

public import gbaid.gba.system : GameBoyAdvance;
public import gbaid.gba.memory : GamePakData;
public import gbaid.gba.keypad : KeypadState;
public import gbaid.gba.display : DISPLAY_WIDTH, DISPLAY_HEIGHT, TIMING_WIDTH, TIMING_HEIGTH, CYCLES_PER_DOT, CYCLES_PER_FRAME, FrameSwapper;
public import gbaid.gba.sound : SOUND_OUTPUT_FREQUENCY, CYCLES_PER_AUDIO_SAMPLE, AudioReceiver;

public static const TickDuration FRAME_DURATION;

public static this() {
    enum nsPerCycle = 2.0 ^^ -24 * 1e9;
    FRAME_DURATION = TickDuration.from!"nsecs"(cast(size_t) (CYCLES_PER_FRAME * nsPerCycle));
}