vemu.

hook

useVemu

Core VEMU hook. Manages wasm init, board selection, firmware loading, the RAF render loop, UART I/O, and peripheral inspector state.

function useVemu(options?: { loadModule?: () => Promise<VemuLoader> }): UseVemuResult

Returns: UseVemuResult

Examples

function Emu() {
  const { boards, selectedBoard, setSelectedBoard, loadProgram,
          hasVideo, setDraw, setUartSink, sendUart } = useVemu();
  return (
    <>
      <select value={selectedBoard} onChange={(e) => setSelectedBoard(e.target.value)}>
        {boards.map((b) => <option key={b.id} value={b.id}>{b.name}</option>)}
      </select>
      <button onClick={async () => {
        const bytes = new Uint8Array(await (await fetch("/demo.elf")).arrayBuffer());
        loadProgram(bytes, "elf");
      }}>Run</button>
      <VemuCanvas hasVideo={hasVideo} setDraw={setDraw} />
      <VemuTerminal setUartSink={setUartSink} sendUart={sendUart} />
    </>
  );
}