mirror of
https://github.com/SourMesen/Mesen2.git
synced 2025-04-02 10:21:44 -04:00
46 lines
No EOL
967 B
C++
46 lines
No EOL
967 B
C++
#pragma once
|
|
#include "pch.h"
|
|
#include "Shared/MessageManager.h"
|
|
|
|
class MgbaLogHandler
|
|
{
|
|
private:
|
|
uint8_t _enableMarker[2] = {};
|
|
bool _enabled = false;
|
|
uint8_t _message[257] = {};
|
|
|
|
void UpdateEnableFlag()
|
|
{
|
|
_enabled |= _enableMarker[1] == 0xC0 && _enableMarker[0] == 0xDE;
|
|
}
|
|
|
|
public:
|
|
void Write(uint32_t addr, uint8_t value)
|
|
{
|
|
if(_enabled && addr < 0xFFF700) {
|
|
_message[addr & 0xFF] = value;
|
|
} else if(addr == 0xFFF780) {
|
|
_enableMarker[0] = value;
|
|
UpdateEnableFlag();
|
|
} else if(addr == 0xFFF781) {
|
|
_enableMarker[1] = value;
|
|
UpdateEnableFlag();
|
|
} else if(addr == 0xFFF701) {
|
|
if(_enabled && (value & 0x01)) {
|
|
if(_message[0] != 0) {
|
|
MessageManager::Log("[Debug] " + string((char*)_message));
|
|
}
|
|
memset(_message, 0, sizeof(_message));
|
|
}
|
|
}
|
|
}
|
|
|
|
uint8_t Read(uint32_t addr)
|
|
{
|
|
switch(addr & 0x03) {
|
|
case 0: return _enabled ? 0xEA : 0x00;
|
|
case 1: return _enabled ? 0x1D : 0x00;
|
|
default: return 0;
|
|
}
|
|
}
|
|
}; |