Device uploading
FPGA, console firmware, Doom application, and IWAD loading tools.
FPGA / Firmware / Doom
Device uploading
FPGA, console firmware, Doom application, and IWAD loading tools.
FPGA web flasher ULX3S US1 / JTAG
Program Hazard3-Doom from the browser
Uses WebUSB to drive the ULX3S FT231X JTAG interface directly. This first version programs FPGA SRAM from a Hazard3-Doom .bit file or an SVF file, so the image is temporary and is lost when the board powers off.
US1 USB connector.
Close fujprog, OpenOCD, and other programs using US1.
The browser derives or verifies the ECP5 target ID before programming.
Persistent SPI flash is intentionally not written by this first implementation. Verify browser/JTAG programming on both ULX3S 12F and 85F before enabling a permanent-flash workflow.
Console firmware uploader Local GDB / OpenOCD
Load the Hazard3 console firmware
Select hazard3-boot-monitor.elf. The local web server passes the ELF to the existing GDB loader, which halts Hazard3 through OpenOCD, writes and verifies the ELF sections, sets _start, and resumes the core.
The firmware does not need a self-replacement listener for this path. OpenOCD and GDB load it through the Hazard3 debug module. This control is available only when the page is served by web/web-server.py, not from GitHub Pages or a generic static HTTP server.
Doom H3D uploader UART / H3L
Load a Doom image over UART
Select a packaged .h3d image and send it directly to the resident monitor. The browser validates the H3D header and payload CRC32 before transfer. This loads SDRAM only; it does not modify the SD card.
The H3L loader must own the UART. If Doom is running, use Stop Doom first and wait for the resident monitor > prompt before uploading.
Doom IWAD uploader UART / H3W
Load a Doom IWAD over UART
Select a legally obtained .wad file and send it to the resident monitor's reserved SDRAM IWAD region. The browser validates the IWAD header, directory, lump bounds, filename, and CRC32 before transfer.
IWAD files are not included with Hazard3-Doom. Use a legally obtained IWAD. The selected memory profile must match the resident monitor build because the H3W header contains the SDRAM load address.
Serial connection
Direct browser connection using the Web Serial API.
Web Serial
Serial connection
Direct browser connection using the Web Serial API.
UART terminal
No serial port selected.
Hazard3-Doom controls
Convenience controls for the resident monitor. Line commands use the selected line ending; raw monitor keys are sent as one byte.
Monitor
SAO / I2C
I2CDriver GUI keys
Single-byte controls for the interactive i2c gui screen; no CR/LF is appended.
The custom command is saved only in this browser.