#include "debug.hpp" #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) */ static char* string = reinterpret_cast(0x4FFF600); constexpr size_t string_len = 0x100; }; // namespace reg void puts(const char* msg, level lvl) { std::strncpy(reg::string, msg, reg::string_len); *reg::flags = (lvl) | 0x100; } bool open() { *reg::enable = 0xC0DE; return *reg::enable ==0x1DEA; } void close() { *reg::enable = 0; } }; // namespace debug