示例#1
0
文件: extras.c 项目: zdimension/CEmu
bool EMSCRIPTEN_KEEPALIVE sendCSC(uint8_t csc) {
    uint8_t flags = mem_peek_byte(CE_kbdFlags);
    if (flags & CE_kbdSCR) {
        return false;
    }
    mem_poke_byte(CE_kbdScanCode, csc);
    mem_poke_byte(CE_kbdFlags, flags | CE_kbdSCR);
    return true;
}
示例#2
0
文件: extras.c 项目: zdimension/CEmu
bool EMSCRIPTEN_KEEPALIVE sendKey(uint16_t key) {
    uint8_t flags = mem_peek_byte(CE_graphFlags2);
    if (flags & CE_keyReady) {
        return false;
    }
    if (key < 0x100) {
        key <<= 8;
    }
    mem_poke_byte(CE_kbdKey, (uint8_t)(key >> 8));
    mem_poke_byte(CE_keyExtend, (uint8_t)(key & 0xFF));
    mem_poke_byte(CE_graphFlags2, flags | CE_keyReady);
    return true;
}
示例#3
0
uint8_t debug_peek_byte(uint32_t address) {
    uint8_t value = mem_peek_byte(address), debugData;

    if ((debugData = debugger.data.block[address])) {
        disasmHighlight.hit_read_watchpoint |= debugData & DBG_READ_WATCHPOINT;
        disasmHighlight.hit_write_watchpoint |= debugData & DBG_WRITE_WATCHPOINT;
        disasmHighlight.hit_exec_breakpoint |= debugData & DBG_EXEC_BREAKPOINT;
        if (debugData & DBG_INST_START_MARKER && disasmHighlight.inst_address < 0) {
            disasmHighlight.inst_address = address;
        }
    }

    if (cpu.registers.PC == address) {
        disasmHighlight.hit_pc = true;
    }

    return value;
}