#include "../../../lib/LinkWirelessMultiboot.hpp" #include #include #include "../../_lib/interrupt.h" #include "scenes/MultibootScene.h" #include "utils/SceneUtils.h" void setUpInterrupts(); void printTutorial(); static std::shared_ptr engine{new GBAEngine()}; static std::unique_ptr multibootScene{ new MultibootScene(engine)}; LinkWirelessMultiboot* linkWirelessMultiboot = new LinkWirelessMultiboot(); int main() { setUpInterrupts(); REG_WAITCNT = 0x4317; // (3,1 waitstates, prefetch ON) engine->setScene(multibootScene.get()); while (true) { engine->update(); VBlankIntrWait(); } return 0; } inline void ISR_reset() { RegisterRamReset(RESET_REG | RESET_VRAM); SoftReset(); } inline void setUpInterrupts() { interrupt_init(); interrupt_set_handler(INTR_VBLANK, [] {}); interrupt_enable(INTR_VBLANK); // A+B+START+SELECT REG_KEYCNT = 0b1100000000001111; interrupt_set_handler(INTR_KEYPAD, ISR_reset); interrupt_enable(INTR_KEYPAD); }