#include "debug.hpp" #include #include #include #include #include namespace debug { /** * \brief MGBA debug registers and constants */ namespace reg { /** * \brief MGBA debug enable register. * * When 0xC0DE is written to the register, debug output is enabled. * When 0 is written to the register, debug output is disabled. * Will be set to 0x1DEA when successfully enabled. */ static volatile uint16_t& enable = *reinterpret_cast(0x4FFF780); /** * \brief MGBA debug flags register. */ static volatile uint16_t& flags = *reinterpret_cast(0x4FFF700); /** * \brief MGBA debug string register. * * Max length of 0x100 (256) including null terminator. */ static mtl::string_ext string(reinterpret_cast(0x4FFF600), 256); }; // namespace reg void puts(const char* msg, level lvl) { reg::string = msg; reg::flags = (lvl) | 0x100; } bool open() { reg::enable = 0xC0DE; return reg::enable == 0x1DEA; } void close() { reg::enable = 0; } }; // namespace debug