void watch_event_mem_r(u16 addr) { if (in_debug_scope()) { return; } int wp; for (wp = 0; wp < watchpoint_cursor; wp++) { if (!watchpoint_enabled[wp]) { continue; } switch (watchpoints[wp].type) { case WATCHPOINT_MEM_RW: case WATCHPOINT_MEM_R: if (watchpoints[wp].mem.begin <= addr && watchpoints[wp].mem.end >= addr) { printf("WATCHPOINT %i: %.4X read %.2X\n", wp, addr, debug_read_byte(addr)); debug_break(); } default:; } } }
uint32_t debug_read_long(uint32_t address) { return debug_read_byte(address) | debug_read_byte(address + 1) << 8 | debug_read_byte(address + 2) << 16; }
uint16_t debug_read_short(uint32_t address) { return debug_read_byte(address) | debug_read_byte(address + 1) << 8; }